如题目所示,永久代存放多次gc清理不掉的数据,还有就是大对象,jvm怎么判断大对象,
可通过参数指定对象超过多少直接进入老年代 -XX:PretenureSizeThreshold=1M
MetaData Space(永久代) 是不存放大对象的哦,永久代在jdk1.8改名叫元空间,元空间使用的是直接内存不是jvm的内存,常量都保存在这
你所说的应该是Old Generation(老年代)中的大对象把,大对象进入老年代有2种情况
1.当对象在Survivor进行了15次(默认15次)Minor GC后对象还存在引用,那么这个对象就需要进入到老年代了
2.另外一种情况那么就是分配担保机制,这种情况一般出现于大对象创建的时候,当在创建大对象时,恰好eden没有内存了,然后进行一次Minor GC发现Survior也存不下eden的大对象,这时就会触发分配担保机制直接将来eden无法存入Survior的对象丢到Old Generation中
如果想了解跟多可以看一下我写的2篇博客哦
JVM整体结构介绍
JVM垃圾回收机制
jvm虽然能够垃圾自动回收机制,但并不能达到理想效果,所以正常情况下还是应该人工处理。
可以通过参数来定义大对象,当超过该大小的对象,直接进入老年代