VMWare服务器上的Java垃圾回收
时间:2020-03-06 14:33:02 来源:igfitidea点击:
在VmWare实例上运行应用程序时,是否有人遇到Java默认垃圾收集器的问题?
我遇到的问题是,完整的垃圾回收没有按我期望的那样运行,并且很好奇VmWare变量是否与此有关。
解决方案
通常,垃圾收集器仅在确实需要时才运行完整的GC。原因是需要很多时间。它将尝试做更多的小型GC,而这些GC将花费更少的时间。大多数情况下,这似乎是一个不错的策略。
如果我们想尝试周操作,则可以将一些额外的GC标志添加到VM。另外,我们可能要确保正在运行服务器虚拟机而不是客户端虚拟机。
我想真正的问题是我们要达到的目标。如果内存不足,可能不是因为GC。这可能是由于内存泄漏引起的,是的,我们可以在内存托管环境中创建它们。它们只是有些不同。
我自己还没有看到这种情况,但是取决于我们运行的是哪个版本的VMware,以及处理器类型,虚拟机的时钟运行速度可能比实时运行的快得多(或者慢一些),这当然会影响间隔垃圾集合运行于。
有关计时问题的高级概述,以及有关如何使虚拟机时间尽可能接近实时的建议,请参见VMware论文VMware中的计时
虚拟机。
我没有注意到VmWare实例上Java中的垃圾回收有任何明显的问题。我建议我们使用诸如Netbeans 6探查器或者YourKit之类的良好探查器来探查应用程序,以确保没有任何内存泄漏。一旦我们消除了泄漏,我们就不必担心垃圾收集了。我相信某些垃圾收集器取决于CPU使用率。无论如何,我们可以在此处阅读有关为Java 6调整垃圾收集的信息。对于较早的VM版本,存在类似的文档。