我看到了PS surviour空间几乎满(98%)的大部分时间我的应用程序。 我不知道什么是PS生存空间。 这是正常的吗? 我应该在这样的情况下做些什么呢? 有人可以请解释。 提前致谢 :)
Answer 1:
首先,看看这里如: 什么是生存空间?
通常,有在堆(例如,对于Hostpot VM)的YoungGeneration部2个生存空间。 他们在那里,让对象,以促进对老一代成熟前。 由于其更昂贵的清理老一代。
收集一些统计数据,看看是否生存空间真有大部分时间。 您应该看到一个总是空的,另一个正在填充同时。 例如参见这个问题的收集GC统计 。
一旦你的数据,寻找:
幸存者空间溢出 -当幸存者空间太小,以允许对象YoungHeap集合和对象被溢出到OldGeneration之间成熟而无需时间成熟(和被促进之前死亡)发生这种情况。
同时,监控tenuring分布
-XX:+PrintTenuringDistribution
。 要看到的速度有多快成熟的对象。
更新:阅读热点内存管理白皮书 ,并请参见串行收集 ,有生存空间的一个很好的解释:
注意:如果空间已满,从伊甸园或从没有被复制到它的活动对象是终身 ,不管他们有多少年轻一代收藏存活。 任何物体留在伊甸园还是从空间后,活动对象已被复制,根据定义,不住了,他们不需要进行检查。
文章来源: PS Survivour space almost full