摘要: GC,即就是Java垃圾回收机制。目前主流的JVM(HotSpot)采用的是分代收集算法。与C++不同的是,Java采用的是类似于树形结构的可达性分析法来判断对象是否还存在引用。即:从gcroot开始,把所有可以搜索得到的对象标记为存活对象。 GC机制 要准确理解Java的垃圾回收机制,就要从:“什 阅读全文
posted @ 2018-09-21 09:50 飞晨信息 阅读(988) 评论(0) 推荐(0) 编辑
摘要: Minor GC触发条件:当Eden区满时,触发Minor GC。 Full GC触发条件: (1)调用System.gc时,系统建议执行Full GC,但是不必然执行 (2)老年代空间不足 (3)方法去空间不足 (4)通过Minor GC后进入老年代的平均大小大于老年代的可用内存 (5)由Eden 阅读全文
posted @ 2018-09-21 09:43 飞晨信息 阅读(389) 评论(0) 推荐(0) 编辑
摘要: 对象是否死亡的2中判定方法:引用计数和可达性分析(又称引用链) 对象再被创建时,对象头里会存储引用计数器,对象被引用,计数器+1;引用失效,计数器 -1;GC时会回收计数器为0的对象。但是JVM没有用这种方式,因为无法判定相互循环引用(A引用B,B引用A)的情况,无法解决对象互相循环引用。 程序把所 阅读全文
posted @ 2018-09-21 09:12 飞晨信息 阅读(1030) 评论(0) 推荐(0) 编辑
摘要: 堆里面分为新生代和老生代(java8取消了永久代,采用了Metaspace),新生代包含Eden+Survivor区,survivor区里面分为from和to区,内存回收时,如果用的是复制算法,从from复制到to,当经过一次或者多次GC之后,存活下来的对象会被移动到老年区,当JVM内存不够用的时候 阅读全文
posted @ 2018-09-21 09:01 飞晨信息 阅读(4518) 评论(0) 推荐(0) 编辑
摘要: 方法区:主要是存储类信息,常量池(static常量和static变量),编译后的代码(字节码)等数据 堆:初始化的对象,成员变量 (那种非static的变量),所有的对象实例和数组都要在堆上分配 栈:栈的结构是栈帧组成的,调用一个方法就压入一帧,帧上面存储局部变量表,操作数栈,方法出口等信息,局部变 阅读全文
posted @ 2018-09-21 08:51 飞晨信息 阅读(673) 评论(0) 推荐(0) 编辑