全部展开
除了直接调用系统。
除了gc之外,还有四种情况下FullGC执行处于活动状态。
1)
上一代空间还不够。仅当新一代对象被传输并创建为大对象和大矩阵时,上一代空间才足够。如果运行FullGC后没有足够的空间,则会发生以下错误:java。
郎
OutOfMemoryError:为了避免由于前两个条件而产生FullGC,Javaheapspace需要在MinorGC阶段回收对象,以便该对象在新一代中保留一段时间,并且不会创建太大的对象或矩阵。
2)
PermanetGeneration空间充满了有关PermanetGeneration中某些类的信息。如果有许多类,反射类和方法要加载到系统中,则可以设置PermanetGeneration。如果未配置为使用CMSGC,则运行。
如果仍然无法回收FullGC,则JVM会引发以下错误消息:java。
郎
OutOfMemoryError:PermGenspace用于避免PermGen填充引起的FullGC现象。您可以使用此方法来增加PermGen空间或使用CMSGC。
3)
升级失败和同时失败显示在CMSGC中。在将CMS用于上一代GC的程序中,请特别注意GC记录是否同时具有升级失败和同时失败。当这两个条件发生时,可以激活FullGC。
升级失败的是MinorGC,无法分配生存空间。对象只能放在上一代中,不能放在上一代中。并发故障是在运行CMSGC的过程中,同时有上一代要放置的对象,但是此时旧的一代空间不足。
答案是增加生存空间,上一代空间或降低使用JDK5的并发GC的激活率。
0 +,6。
在版本0和更高版本中,由于JDK错误29,在监视完成后CMS可能会激活清除操作。
在这种情况下,可以通过设置-XX来避免这种情况:CMSMaxAbortablePrecleanTime = 5(ms)。
4)
MinorGC升级到上一代的统计平均值高于上一代。这是一个更复杂的触发情况。为了避免由于将新一代产品升级为上一代产品而导致前代产品空间不足,在运行热点MinorGC时,先前升级到上一代产品的MinorGC的平均大小是上一代产品FullGC的剩余空间。已直接激活。
例如,当程序首次激活MinorGC时,会将6 MB的对象提升到上一代。接下来,当下一个MinorGC出现时,首先检查以查看上一代的剩余空间是否大于6 MB。如果少于6 MB,请运行FullGC。
如果新一代使用PSGC,则方法会稍有不同。MinorGC之后也将验证PSGC。例如,在上一个示例中的第一个MinorGC之后,PSGC检查以查看上一代的剩余空间是否超过6 MB(例如,触发了旧一代回收)。
除了上述四个条件外,对于使用RMI进行管理的RJ或SunJDK应用程序,FullGC默认情况下每小时运行一次。
-Java-Dsun可能首先出现。
Rmi。
Dgc。
顾客
gcInterval = 3600000设置FullGC执行间隔或禁用RMI并通过-XX:+ DisableExplicitGC调用系统。
Gc。
