java - 为什么会有Full GC?

标签 java garbage-collection jvm

我启动了一个java程序:

java -cp -Xms6072m -Xmx6072m -Xmn2048m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:-DisableExplicitGC 

但是Full GC太多了?

2013-07-09T18:16:42.215+0800: [Full GC [PSYoungGen: 11987K->0K(1972032K)] [PSOldGen: 333076K->150949K(408768K)] 345063K->150949K(2380800K) [PSPermGen: 44430K->44430K(262144K)], 0.4696770 secs] [Times: user=0.47 sys=0.00, real=0.47 secs]

2013-07-09T18:16:58.696+0800: [Full GC [PSYoungGen: 12357K->0K(2029568K)] [PSOldGen: 386748K->118215K(383232K)] 399105K->118215K(2412800K) [PSPermGen: 44430K->44430K(262144K)], 0.5117670 secs] [Times: user=0.51 sys=0.00, real=0.51 secs]

不知道为什么!有人可以帮助我吗?

最佳答案

根据您选择的垃圾收集器,垃圾收集不仅在内存已满时发生。它们可以由各种事件/状态触发。不知何故,垃圾收集器认为现在是开始运行垃圾收集的正确时机。

尝试找出您正在使用的垃圾收集器的特征。防止垃圾收集可能非常棘手,如果没有任何进一步的信息,很难给出任何建议。垃圾收集很少是任何问题的真正原因。通常垃圾收集在实时应用程序中至关重要。它最后输出的半秒时间很可能是整个垃圾收集所花费的时间。通常只有一小部分是应用程序暂停的时间。

关于java - 为什么会有Full GC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17545809/

相关文章:

java - 如何确定是否在 JVM 实例上设置了 -server 选项

java - 获取和释放 java 监视器锁(同步块(synchronized block)、可重入锁等)是否需要上下文切换到内核空间?

Java TimerTask <identifier> 预期

java - Hibernate SQL In 子句使 CPU 使用率达到 100%

c# - 如何让垃圾收集器在集合超出范围之前处理该集合?

java - 为什么 JavaFX 媒体播放器崩溃?

java - 露天 : rules between folders

java - 从 Javascript 访问 richfaces 树的选定节点

c# - 图像处理循环中的内存异常(需要比 GC.collect 更好的解决方案)

Java JIT编译器寄存器优化