假设您选择通过跟踪问题的根本原因(内存泄漏)来解决问题,那么您将如何收集数据以放大问题?
使用堆转储,
jmap并使用Eclipse
Memory
Analyzer加载转储。在这里,您可以分析哪些对象消耗了最多的内存,哪些“根”阻止了其他对象的收集,等等。
还有其他堆分析程序,例如
jhat,但是我发现EMA是最快,最好的(免费)解决方案。
假设您只是通过简单地重新启动容器来选择一种快速而肮脏的方法来加快处理速度,那么您将如何收集数据以选择最佳的重新启动周期?
使用JMX监视堆大小以及其他堆和GC统计信息。
您是否能够在更长的时间内部署和运行项目,而无需重新启动servlet容器以恢复快照?
是。通过避免/修复内存泄漏。



