我写了一个非常复杂的java应用程序,它正在对来自市场的价格数据进行大量实时计算,并从查看Windows中的任务管理器这个吸盘正在接近1MEG,每30秒钟一次,性能一直很好,直到它接近300MEG的内存限制,然后g-collector真的踢进我的CPU达到50%左右,并且UI性能迅速降低到目前为止我写的所有内容这听起来像我有一些不好的代码正在进行,因为我的程序的性质是CPU密集型的,但设计存储内存中的数据非常少。有很多内存问题的Java应用程序
我需要一些帮助,以了解如何才能找出问题所在,我想如果我能看到哪些对象被存储在内存中,可能会有帮助一些糟糕的代码,但我心中有了Java,因为我认为这些都是我不必担心的问题。感谢任何答案。 - Duncan
使用探查器可能是您最好的选择。 – jjnguy 2010-09-17 19:07:28
尝试VisualVM和jmap -histo,如果你想要更多的细节,请试用YourKit的eval许可证。我建议你使用“jstat -gccause {pid} 5s”来监视内存使用情况,因为这样可以得到更准确的图片。 – 2010-09-17 20:08:32