3

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

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

66872.846:[Full GC [Psyounggen:932534K-> 930686K(1865088K)] [PSOLDGEN:5595037K-> 5595024K(5595136K)(5595136K)] 6527571K-> 652571K-> 6525710K(746660224K)时间:用户=12.25 系统=0.00,真实=12.24 秒]
66885.098:[Full GC [Psyounggen:932608K-> 932608K(1865088K)] [PSOLDGEN:5595024K-> 5595024K(5595136K)(5595136K)] 6527632K-> 6527632K-> 6527632K(74632K)时间:user=9.66 sys=0.01, real=9.67 secs]
66894.773:[Full GC [Psyounggen:932608K-> 932488K(1865088K)] [PSOLDGEN:5595024K-> 5595023K(5595136K)(5595136K)] 6527632K-> 65275512K(74512K)时间:用户=11.85 系统=0.00,真实=11.85 秒]
66906.623:[Full GC [Psyounggen:932608K-> 932608K(1865088K)]时间:user=9.60 sys=0.00, real=9.60 secs]
66916.224:[Full GC [Psyounggen:932608K-> 932488K(1865088K)]时间:user=9.65 sys=0.00, real=9.65 secs]
66925.881:[Full GC [Psyounggen:932608K-> 0K(1865088K)]时间:user=6.90 sys=0.00, real=6.90 secs]

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

谢谢你的建议!

4

1 回答 1

1

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

于 2010-05-28T14:34:08.717 回答