jvm笔记第一期
heap里有一个eden两个surviur和一个终身,回收第一次把剩下的copy到s1中,第二次回收copy到s2中,然后再重复,最后放到终身去
判断是不是垃圾有两种
1.引用计数
2.根搜索
回收方法三种
1.mark-sweep先标记再清除,容易碎片化,不能分配完整的空间,实在找不到分配空间,来一次大的碎片整理
2.copying 内存半分,将上半部的copy到下半部顺便压缩,如此反复,但是会产生内存浪费
mark-compact 回收时顺带压缩,效率比copy低
java对象分配
先在栈上分配然后再线程本地分配然后再进入老年代最后进入eden