为大型应用程序进行分析时很困难
Posted
技术标签:
【中文标题】为大型应用程序进行分析时很困难【英文标题】:Profiling is difficult when doing for large application 【发布时间】:2012-05-31 09:14:05 【问题描述】:我正在尝试分析我的 Web 应用程序,这是一个非常大的应用程序,并且在缓存和其他进程中占用大量内存,因此很难进行堆转储然后分析,甚至当我试图通过 JProfiler 分析它时工作也很慢。有没有办法我可以轻松做到这一点。我的应用程序几乎占用了 120 GB RAM 中的 30 GB。
我在某处读到我们可以为堆的不同部分分配不同数量的内存。我们没有在我们的应用程序中做这样的事情。我们刚刚给出了-xmx -110g。这意味着我们提供了 110 GB 的最大 RAM。我可以检查它为不同的块分配了多少内存,比如老一代、伊甸园空间、幸存者空间。
【问题讨论】:
Here's a method 你应该试试。它技术含量低但有效。 【参考方案1】:分析任何使用 30gb 的系统都将是一项挑战。分析会收集大量信息,这会增加更多开销。
最好的方法是将您的应用程序分解为模块 - 您确实创建了一个模块化应用程序,对吗?然后,您可以使用示例数据自行分析每个模块。这样可以限制开销和消耗的内存量。
一些性能调优技巧可以参考http://java.dzone.com/articles/java-performance-tuning?page=0,1,可以设置不同的内存使用级别。
【讨论】:
【参考方案2】:如果你想知道
它分配了多少内存给不同的块,比如老一代,伊甸园 空间,幸存者空间。
例如,您可以使用此类:http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/management/ManagementFactory.html 并使用 JMX 访问此信息。
【讨论】:
以上是关于为大型应用程序进行分析时很困难的主要内容,如果未能解决你的问题,请参考以下文章