跟踪java Web应用程序中的内存不足异常

时间:2014-08-08 16:47:15

标签: java spring out-of-memory performance-testing dwr

我正在开发一个Web应用程序,它读取文件并给我搜索带有行号和其他详细信息的字符串,为此,我使用以下技术:

  1. Spring MVC
  2. DWR反向AJAX
  3. FTP和共享位置文件,我正在使用此应用程序阅读。

    每次,我正在搜索,它显示“outofmemory”异常。是否有任何可用的工具,我可以看到哪部分代码正在创建问题?

    我尝试了jConsole,MAT和其他工具,但由于我是性能测试新手,所以看起来都很复杂。

2 个答案:

答案 0 :(得分:1)

如果您使用的是最新版本的Java,则只需尝试使用jVisualVM,它可以与您的JDK一起使用。 (docs

它将使您能够挂接正在运行的进程(包括本地应用程序服务器),并生成堆转储以检查加热内存的内容。

对于大多数低级内存分析/内存泄漏搜索要求,它通常都足够好。

尽管如此,MAT可能会允许你做同样的事情并且具有相似的复杂性,所以我怀疑你可能不得不扣上并阅读一两个关于如何使用它的教程。这篇博文在analyzing memory leaks in a Java applicationjVisualVM上给出了一个不错的介绍。

答案 1 :(得分:0)

如果使用的RAM太多,则会引发OutOfMemoryError。尝试找出存储大量数据的位置,例如在一个永远不会清除的列表中。

如果找不到错误,请创建堆转储。然后,打开它,看看你的记忆是什么。一个很棒的教程在这里: https://blog.codecentric.de/2011/08/java-heapdumps-erzeugen-und-verstehen-4-akt/