1

我正在尝试分析我的 Web 应用程序,这是一个非常大的应用程序,并且在缓存和其他进程中占用大量内存,因此很难进行堆转储然后分析,甚至当我尝试通过 JProfiler 分析它时它也在工作非常慢。有没有办法我可以轻松做到这一点。我的应用程序几乎从 120 GB RAM 中占用了 30 GB。

我在某处读到我们可以为堆的不同部分分配不同数量的内存。我们没有在我们的应用程序中做这样的事情。我们刚刚给出了-xmx -110g。这意味着我们提供了 110 GB 的最大 RAM。我可以检查它分配给不同块(如老一代、伊甸园空间、幸存者空间)的内存量吗?

4

2 回答 2

1

分析任何使用 30gb 的系统都将是一个挑战。分析会收集大量信息,这会增加更多开销。

最好的方法是将您的应用程序分解为模块 - 您确实创建了一个模块化应用程序,对吗?然后,您可以使用示例数据自行分析每个模块。这样可以限制开销和消耗的内存量。

一些性能调优技巧 可以参考http://java.dzone.com/articles/java-performance-tuning?page=0,1 ,可以设置不同的内存使用级别。

于 2012-05-31T09:26:43.630 回答
0

如果你想知道

它为不同的块分配了多少内存,比如老一代、伊甸园空间、幸存者空间。

例如,您可以使用此类:http ://docs.oracle.com/javase/1.5.0/docs/api/java/lang/management/ManagementFactory.html并使用 JMX 访问此信息。

于 2012-06-05T09:11:40.120 回答