今天工作時我在我們的應用程序中遇到了這個問題。 情景是:我們點擊一個加載按鈕,它會加載缺乏來自數據庫的記錄。但問題是,通過點擊刷新按鈕來重新加載相同的記錄時,它會給出OutOfMemoryError。任何人都可以簡單地解釋一下可能的原因是什麼,因爲一開始試圖加載所有的記錄,但是爲什麼我們在刷新它的時候得到了異常。獲取OutOfMemoryError的主要可能原因是什麼?
如果有任何有用的資源可用來研究這種情況,也可以幫助很多人。 在此先感謝...
今天工作時我在我們的應用程序中遇到了這個問題。 情景是:我們點擊一個加載按鈕,它會加載缺乏來自數據庫的記錄。但問題是,通過點擊刷新按鈕來重新加載相同的記錄時,它會給出OutOfMemoryError。任何人都可以簡單地解釋一下可能的原因是什麼,因爲一開始試圖加載所有的記錄,但是爲什麼我們在刷新它的時候得到了異常。獲取OutOfMemoryError的主要可能原因是什麼?
如果有任何有用的資源可用來研究這種情況,也可以幫助很多人。 在此先感謝...
我知道我們的應用程序有很多線程處理。我試圖通過使用下面的命令來減少服務器中的堆棧大小,並且它工作正常。
-Xss512k
(設置Java線程堆棧大小,這一點)
這裏是resource像我已經習慣瞭解決此問題。
這不回答*原因*的問題。你能否確認你創建了太多的線程,這樣累積的堆棧大小實際上超過了一些限制? –
唯一的原因是您不斷創建新對象而沒有釋放足夠的空間,或者您創建的線程太多。
您可以使用Java VisualVM's profiler來執行一些內存分析。這允許您獲得概覽,哪些對象在內存中,哪些其他對象/線程具有對它們的引用。
Java VisualVM應該是Sun JDK的一部分。
參見:
你要確保舊結果不再重新加載它們時佔用內存? – Mark
這可以幫助https://plumbr.eu/outofmemoryerror/java-heap-space – dhS
這個項目已經開發出來了,從上週開始我就開始工作了,我對它沒有太多深入的瞭解。你能否建議我如何確保舊的結果不再佔用記憶?抱歉地說,但爲了安全和公司的政策,我不能在這裏發佈代碼?如果一般的闡述也幫助我很多。謝謝。 –