![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM读书笔记
手持两把锟金拷
每天进步一点点
展开
-
JVM之新生代进入老年代
内存分配及回收策略——新生代如何进入老年代内容摘抄自周志明的《深入理解Java虚拟机2版》 新生代GC(Minor GC)指发生在新生代的垃圾收集动作,因为Java对象大多都具备朝生夕灭的特性,所以Minor GC非常频繁,一般回收速度也比较快。老年代GC(Major GC/Full GC)指发生在老年代的GC,出现了Major GC,经常会伴随至少一次的Minor GC(但非绝对的,在Paral原创 2017-12-20 09:30:58 · 5085 阅读 · 0 评论 -
GC算法及Jvm的分代
在Java虚拟机中,给内存划分了三个代,根据不同的代使用不同的gc算法,在gc回收垃圾之前,我们应该先知道gc如何区分垃圾GC如何区分垃圾引用计数器“引用计数”法通过统计控制生成对象和删除对象是的引用数来判断,在对象在添加一个引用计数器,每当有一个地方引用就+1,引用失效就-1,垃圾回收程序收集计数为0的对象即可。但是这种方法的缺陷是无法解决循环引用。可达性分析在主流垃圾判断算...原创 2017-12-20 09:58:11 · 273 阅读 · 0 评论 -
Java对象的创建
Java对象的创建虚拟机遇到一条new指令时,首先去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,然后检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。类加载检查通过后,虚拟机会为新生对象分配内存。对象所需内存的大小在类加载完成后便可完全确定,为对象分配空间的任务等同于把一块确定大小的内存从Java堆中划分出来。“指针碰撞”假设Java堆中内存原创 2017-12-13 16:36:32 · 192 阅读 · 0 评论 -
JVM运行时数据区域
运行时数据区域有一下几个部分 1.程序计数器 很小的,线程私有的内存; 线程执行的字节码行号指示器,记录下一条运行指令; 唯一一个规范没有规定OutOfMemoryError的情况。2.Java虚拟机栈 线程私有的内存,线程启动时虚拟机会为其分配一个java虚拟机栈; 虚拟机栈元素为栈帧,在方法执行时都会创建一个栈帧,存储局部变量表、操作数栈、动态链接、方法出原创 2017-12-12 11:53:45 · 185 阅读 · 0 评论