幸存者的空间在变,为什么呢?

时间:2014-12-20 10:14:53

标签: java garbage-collection

如oracle java GC basic documentation中所述,当触发任何次要GC时,位于S0 sirvivor空间(如果有)的所有对象都将移动到S1 sirvivor空间或者副verca中。至少可以说,这对我来说似乎很奇怪。为了执行操作,GC浪费了JVM资源,以便将对象从Si移动到Sji!=j, i,j来自{1, 2}。我可以不遵循该操作的实际目的......难道没有人向我解释过吗?

1 个答案:

答案 0 :(得分:1)

这是GC分离变量范围的方式,因此类中的变量将在S0中,但是当进入方法时,GC被触发,以便方法中的局部变量变为S0,并且类中的变量变为S1。登记/> 当退出方法时,GC再次被触发,局部变量被破坏,类中的变量被移动到S0,当它们被淘汰时(注意类中的变量意味着我们不能达到的任何变量)只是静态变量)。