2016-11-08 42 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」文件在其他平臺上運行。或者,您可以使用指定平臺上的源代碼重新生成類文件。