在进行大型应用时,分析很困难

时间:2012-05-31 09:14:05

标签: java performance memory-leaks profiling

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

我在某处读过,我们可以为堆的不同部分分配不同数量的内存。我们在申请中没有这样做。我们刚刚给出-xmx -110g。这意味着我们已经给出了110 GB的Max RAM。我可以检查它分配给不同的块有多少内存,如旧的gen,eden space,幸存者空间。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

如果你想知道

  

它分配给像gen gen,eden这样的不同块的内存量   空间,幸存者空间。

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