2012-06-19 33 views
0

我有一種情況,Java Applet在多次打開後會掛起。這隻發生在RAM低的系統上,這導致我相信可能存在內存泄漏,或者只是沒有足夠的內存分配給堆。Java applet可能會佔用太多內存

如何測試內存泄漏的小程序?像JProbe這樣的工作?

+1

如果您使用最新版本的Java,請使用VisualVM - 它應該已經是JDK的一部分。你可以跟蹤內存泄漏等。 – Adam

+0

我遵循你的建議並使用了VisualVM ......問題在於applet在關閉並打開多次後出現問題。所以我不確定如何跟蹤BETWEEN運行時鎖定的任何資源。 –

+0

你的applet是否使用了一些DLL等? –

回答

0

我不認爲在特定的工作站上的低RAM是一個問題。

如果未另外指定(使用-Xmx設置),Java applet在開始時會獲得內存的64MB。 JVM從系統開始保留這個數量的RAM,所以如果系統有更少的可用內存,JVM(以及Applet)甚至不會啓動。

但是,如果它啓動,它保證所有配置的內存可用。 所以,如果你的小程序仍然缺乏記憶,有兩種可能性:

  1. 默認設置(64MB)是低 - 配置您的小程序來得到更多的內存。
  2. 您沒有正確釋放資源並泄漏內存。看看你的applet的lifecycle methods,並檢查你是否應該釋放資源。

而且,你說這到底,你的小程序掛起。要查看正在發生的情況,請在生命週期方法,enable Java Console中添加一些日誌,然後查找異常。

+0

謝謝。我怎樣才能完成(1)? –

+0

請參閱[這裏](http://stackoverflow.com/questions/5026376/applet-java-heap-space),[這裏](http://www.duckware.com/pmvr/howtoincreaseappletmemory.html)或[這裏](http://docs.oracle.com/javase/tutorial/deployment/deploymentInDepth/embeddingJNLPFileInWebPage.html) – npe

+0

這些解決方案需要修改代碼。目前,這是我想避免的。通過**控制面板**添加-Xmx和-Xms是否會起作用? –