java - GcTimeLimit 可能不会出错的原因?

标签 java performance garbage-collection stability

我有一个 Java 网络服务,包含在 Jetty 中。我使用的是带有默认 ParallelGC 的 Sun Java 6,并且打开了以下命令行选项:“-verbose:gc -XX:+PrintGCTimeStamps --XX:+PrintGCDetails”。

当我的进程内存不足时,我会看到这样的日志行,背靠背:

66872.846: [Full GC [PSYoungGen: 932534K->930686K(1865088K)] [PSOldGen: 5595037K->5595024K(5595136K)] 6527571K->6525710K(7460224K) [PSPermGen: 16488K->16487K(21504K)], 12.2488150 secs] [Times: user=12.25 sys=0.00, real=12.24 secs] 
66885.098: [Full GC [PSYoungGen: 932608K->932608K(1865088K)] [PSOldGen: 5595024K->5595024K(5595136K)] 6527632K->6527632K(7460224K) [PSPermGen: 16487K->16487K(21504K)], 9.6745600 secs] [Times: user=9.66 sys=0.01, real=9.67 secs] 
66894.773: [Full GC [PSYoungGen: 932608K->932488K(1865088K)] [PSOldGen: 5595024K->5595023K(5595136K)] 6527632K->6527512K(7460224K) [PSPermGen: 16487K->16487K(21504K)], 11.8445420 secs] [Times: user=11.85 sys=0.00, real=11.85 secs] 
66906.623: [Full GC [PSYoungGen: 932608K->932608K(1865088K)] [PSOldGen: 5595023K->5595023K(5595136K)] 6527631K->6527631K(7460224K) [PSPermGen: 16487K->16487K(21504K)], 9.6006950 secs] [Times: user=9.60 sys=0.00, real=9.60 secs] 
66916.224: [Full GC [PSYoungGen: 932608K->932488K(1865088K)] [PSOldGen: 5595023K->5595023K(5595136K)] 6527631K->6527512K(7460224K) [PSPermGen: 16487K->16487K(21504K)], 9.6498320 secs] [Times: user=9.65 sys=0.00, real=9.65 secs] 
66925.881: [Full GC [PSYoungGen: 932608K->0K(1865088K)] [PSOldGen: 5595023K->4133351K(5595136K)] 6527631K->4133351K(7460224K) [PSPermGen: 16487K->16487K(21504K)], 6.8990990 secs] [Times: user=6.90 sys=0.00, real=6.90 secs] 

前五行似乎表明垃圾收集器完全没有取得任何进展。根据我对 JVM 的理解,这应该会导致 OutOfMemoryError,但我在日志中没有看到类似的内容。是否有可能(在 JVM 级别)阻止它们被抛出?或者 Jetty 或我的应用程序正在抑制它们?

感谢您的建议!

最佳答案

尝试显式设置选项,或改为设置 -XX:GCHeapFreeLimit。这些选项的文档非常薄,可能无法准确反射(reflect)您正在运行的 JVM 的行为。 (或者相关选项的默认值可能已更改。)

关于java - GcTimeLimit 可能不会出错的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2929636/

相关文章:

java - 新 gTLDS 的 apache commons-validator 替代品

macos - OSX WebView 非常慢且滞后

java - 字节好友代码生成

C#:为什么类变量调用实现的接口(interface)方法比接口(interface)变量更快?

javascript - 使用 ULP 比较 double (最后一位的单位)

ios - iOS 中不允许私有(private) API 调用(函数 "exc_server")

java - 是否可以等待 GC_FOR_ALLOCATION 完成?

javascript - 在不创建 Date 对象的情况下获取 Javascript 中的当前时间?

java - 检测字符串中的希伯来字母

java - Java 中一维数组的元素必须是原始数据类型吗?