在VmWare实例上运行应用程序时,是否有人遇到过Java默认垃圾收集器的问题?
我遇到的问题是完全垃圾收集没有像我预期的那样频繁运行,并且好奇VmWare变量与它有什么关系。
答案 0 :(得分:1)
通常,垃圾收集器只在真正需要时运行完整的GC。原因是需要花费很多时间。它将尝试做更多更小的GC,花费更少的时间。在大多数情况下,这似乎是一个很好的策略。
如果您想尝试调整内容,可以添加一些额外的GC标记给VM。 See this另外,您可能希望确保运行服务器vm而不是客户端虚拟机。
我想真正的问题是你想要实现的目标。如果你的内存不足,可能不是因为GC。它可能是因为Memory leaks,是的,你可以在内存管理环境中创建它们。他们只是有点不同。
答案 1 :(得分:1)
我没有注意到VmWare实例上Java中的垃圾收集存在任何明显问题。我建议您使用Netbeans 6分析器或YourKit这样的好的分析器来分析您的应用程序,以确保没有任何内存泄漏。一旦我们消除了泄漏,我们就不必担心垃圾收集了。我相信一些垃圾收集器依赖于CPU使用率。无论如何,您可以阅读有关调整Java 6 here的垃圾收集的信息。旧VM版本存在类似的文档。
答案 2 :(得分:0)
我自己没有看到这个,但根据您正在运行的VMware版本以及您的处理器类型,虚拟机时钟可能比实时运行得更快(或更慢),这当然会影响间隔垃圾收集运行在。
有关计时问题的高级概述,以及如何使VM时间尽可能接近实时的建议,请参阅VMware文章Timekeeping in VMware Virtual Machines。