JVM学习

定义:

JAVA Virtual Machine程序的运行环境(java二进制字节码的运行环境)。

好处:

  1. 一次编写,到处运行
  2. 自动内存管理,垃圾回收功能
  3. 数组下标越界,越界检查,抛异常
  4. 多态

比较:

jvm,jdk,jre

常见的jvm:

jvm是一种规范

内存结构:

  1. 程序计数器(寄存器)
  2. 虚拟机栈
  3. 本地方法栈
  4. 方法区

程序计数器(寄存器):

JAVA源代码→jvm指令,二进制字节码→解释器→机器码→CPU

作用:

在一系列指令中,记住下一个jvm指令的执行地址。

寄存器是整个CPU中读写最快的部件。

特点:

1.线程私有;

2.不会存在内存溢出。

虚拟机栈:

定义:

栈-线程运行需要的内存空间。

栈帧-每个方法运行时需要的内存。

  1. 垃圾回收不涉及栈内存。栈内存由线程自动管理(方法调用入栈、执行完出栈),垃圾回收仅针对堆内存中不再被引用的对象。
  2. 栈内存不是分配越大越好。栈过大会减少进程可创建的线程数,且超出物理内存会触发页交换,反而降低性能。
  3. 方法内局部变量是线程安全的。局部变量存储在栈帧中,每个线程有独立栈,不存在多线程共享的情况。

hotspot

栈内存溢出:

线程运行诊断:

本地方法栈

堆:

方法区:

定义

组成

方法区内存溢出

运行时常量池

相关推荐
星火开发设计2 小时前
C++ multiset 全面解析与实战指南
开发语言·数据结构·c++·学习·set·知识
am心2 小时前
学习笔记-菜品接口-菜品分页查询
笔记·学习
丝斯20112 小时前
AI学习笔记整理(44)——大规模预训练模型数据处理管道Pipeline
人工智能·笔记·学习
姓蔡小朋友2 小时前
JVM 类加载器
jvm
知识分享小能手3 小时前
Oracle 19c入门学习教程,从入门到精通, —— 知识点详解(1)
数据库·学习·oracle
山土成旧客3 小时前
【Python学习打卡-Day42】打开深度学习“黑箱”:从Hook回调到Grad-CAM可视化
python·深度学习·学习
星火开发设计3 小时前
C++ stack 全面解析与实战指南
java·数据结构·c++·学习·rpc··知识
冉冰学姐3 小时前
SSM校园学习空间预约系统w314l(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·学习·ssm 框架·校园学习空间预约系统·师生双角色
小当家.1054 小时前
从零构建项目认知:如何画出一张合格的系统架构图(以供应链系统为例)
java·spring boot·学习·架构·系统架构·供应链·实习