2016-11-08 44 views
0

我有一个程序与18个类。他们正在工作线程保存(选中)没有递归调用,也没有做任何复杂的计算。永久内存不足| Java | IntelliJ

但我的想法总是说,几个小时

后没有足够的内存来执行请求的操作。 Pleace增加“Xmx”设置并重新启动IDE以使更改生效。

所以我做到了。 Atm我没有问题。

但我仍然想知道如果我可能有一个错误或线程没有正常终止。因为我使用WAMP和其他一些HTTP功能,所以我可以把它形象化。

  1. 那么有没有可能看到什么类/线程消耗多少内存?
  2. 到目前为止,我被教导的虚拟机应该有一个垃圾收集器。那么,为什么我必须在过去出现错误时重新启动IDE?
  3. 如果有人在这里熟悉IntelliJ,他/她可能会回答我如何让我的整个项目在PC上运行,只安装了一个VM。因为在项目文件夹中只有.java文件,所以没有类文件。当我尝试使用javac“file.java”的控制台时,我只收到很多错误。 (项目正在与Maven和IntelliJ 2016年2月5日使用)
+0

对于内存分析,你可以尝试https://www.yourkit.com/java/profiler/他们有一个试用版。它可以显示哪些类/对象消耗太多内存。 –

回答

1
  1. 你可以转储内存“-XX:+ HeapDumpOnOutOfMemoryError”内存不足错误发生时;或“-XX:-PrintGC和XX:-PrintGCDetails”用于堆/ GC信息。

  2. 设置GC是不够的。您必须调整GC,指出更改堆大小,堆代以及何时执行GC以获得最佳性能或避免内存不足错误。更多可以在Link上阅读。

  3. 您可以让“jar”文件或“class”文件在其他平台上运行。或者,您可以使用指定平台上的源代码重新生成类文件。