![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
java虚拟机
裸奔的小强QQ
每天进步一点点
展开
-
java对象的创建过程
当java虚拟机遇到一条字节码new指令时, 首先会去常量池中查找看能不能找到这个类的符号引用(), 并且检查这个类是否已经被加载,解析和初始化过; 如果没有,就会先执行相应的类加载过程. 类加载检查通过之后,虚拟机将会为即将创建的对象分配内存. 即将创建的对象所需的内存大小在类加载完成之后就能确定; 给对象分配内存空间的过程其实就是相当于在java堆内存中划分出一块相同大小(对象所需的内存大小)的内存出来; 而分配内存有两种方式: 选择哪种方式由java堆内存是否规整(即已使用过的内存和未使用的内存放在两原创 2020-05-10 23:42:57 · 132 阅读 · 0 评论 -
java内存区域
1. 程序计数器 2. 虚拟机栈 线程私有; 每个方法被执行时,java虚拟机都会创建一个栈帧,栈帧用来存储局部变量表, 操作数栈, 动态连接, 方法出口等信息;每个方法执行的过程对应的就是一个栈帧从入栈到出站的过程; 其中, 局部变量表包括基本数据类型和对象的引用;在方法运行时, 局部变量表所需要的空间是确定的,也就是说在方法运行期间, 并不会改变局部变量表的大小; 如果线程请求的栈深度大于虚拟机所允许的深度,那么将会发生栈溢出异常(StackOverFlowError); 如果内存空间不足,也会出现内存原创 2020-05-10 21:48:45 · 94 阅读 · 0 评论