
jvm
sheshouzuomeiyou
这个作者很懒,什么都没留下…
展开
-
jvm之垃圾收集算法
概述 jvm中。程序计数器、虚拟机栈、本地方法栈3个区域随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理。因此,内存垃圾回收主要集中于Java堆和方法区中,在程序运行期间,这部分内存的分配和使用都是动态的。 对象存活判断 1.引用计数法:给对象添加一个引用计数器,每当有一个地方引用他时,计数器值加1;当引用失效时,计数器减1;任何时刻计数器为0的对象就是不可能再...原创 2019-02-22 15:02:25 · 125 阅读 · 0 评论 -
jvm之内存分配策略
对象内存主要分配在新生代Eden区,如果启用了本地线程分配缓冲, 则优先在TLAB上分配,少数情况能会直接分配在老年代,或被拆分成标量类型在栈上分配(JIT优化)。分配的规则并不是百分百固定,细节主要取决于垃圾收集器组合,以及JVM内存相关的参数 对象优先在Eden分配 大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够空间进行分配时,虚拟机将发起一次Minor GC。将Eden区和...原创 2019-02-22 15:56:06 · 167 阅读 · 0 评论 -
jvm之java内存模型
Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。 主内存和工作内存 Java内存模型的主要目的是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。注意一下,此处的变量并不包括局部变量与方法参数,因为它们是线程私有的...原创 2019-02-27 15:25:27 · 196 阅读 · 0 评论 -
jvm之对象的创建过程
下图是java对象的创建过程 1)类加载检查 虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程。 2)分配内存 在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需的内存大小在类加载完成后便可确定,为对象分配空间的任务等同于把一块确定大小的...原创 2019-02-20 16:44:07 · 266 阅读 · 0 评论