堆的细分与GC-复制算法
2021-03-08 22:25:46 0 举报
堆的细分
作者其他创作
大纲/内容
堆(jdk1.7)
伊甸园(Eden Space)
老年代Old
持久代/元空间(方法区)(perm)
复制算法好处:没有内存碎片复制算法坏处:浪费了内存空间,多了一半空间永远是空to复制算法最佳使用场景:对象存活度较低的时候,即新生区
关于版本问题:
永久区:
养老区(老年代)
幸存区0区(from/to)
新生区(新生代)
2.伊甸园:所有的对象都是在伊甸园中new出来的【99%的对象都是临时对象】
伊甸园区
复制算法中,幸存区的from和to是不固定的,谁空谁是to
永久区
这个区域是常驻内存的。用来存放JDK自身携带的Class对象。Interface元数据,存储的是Java运行时的一些环境或者类信息,这个区域不存在垃圾回收!关闭VM虚拟就会释放这个区域的内存
元空间
jdk1.6之前:永久代,常量池是在方法区jdk1.7:永久代,慢慢的退化了,【去永久代】,常量池在堆中jdk1.8:无永久代,常量池在元空间
堆
幸存区0区
幸存区1区(from/to)
轻GC
堆(jdk1.8)
新生区:
幸存区1区
3.幸存区0区和1区
重GC
复制算法(主要作用于新生代):每次轻GC,都会将伊甸园中活着的对象转移到幸存区
满了
1.类诞生、成长、甚至死亡的地方
一个启动类,加载了大量的第三方jar包,Tomcat部署了太多的应用,大量动态生成的反射类,不断的被加载...直到内存变满,就会出现OOM
堆的细分与GC-复制算法
0 条评论
回复 删除
下一页