[英]Java Swing application freezes out
我們有一個Java應用程序,它很大,需要太多內存,盡管我使用Xm
標志設置了初始和最大內存,但有時會凍結,並且在1-2分鍾后會出現OutOfMemoryError
(如果幸運的話)。
如果發生這種情況,我們需要重新啟動應用程序。
我們通過僅運行命令行的本機c應用程序運行該程序。
Xmx
標志怎么辦? 如果我沒有設置Xmx標志怎么辦?
然后,JVM默認將應用程序的內存大小設置為(通常為適度)。
這是否意味着無限的內存使用?
沒有。
我如何知道應用程序是用C還是Java凍結的?
修復內存泄漏1 。
請注意,我回答的問題使用的是“發布”,而不是“實現”。 經過仔細考慮,我認為答案應該完全相同。 “釋放(內存)”或“意識到(存在問題)”都無法真正解決問題。 解決實際問題(內存泄漏)的任何一種方法都更好。
作為旁白。 我不認為問題出在C代碼中,但是一個簡單的測試(從命令行啟動應用程序)應該可以揭示這兩種方法。 我認為這個問題是Java代碼的原因是OutOfMemoryError
是由(大概)全功能的JVM檢測。
如果是C app。 使用了JVM為其本身或應用程序保留的內存空間 。 我猜想錯誤可能會大不相同,可能是由於以下原因: JVM internal error..
其他貢獻者還提供了一系列好的建議,我將在這里重新討論。
close()
全部,則在代碼中搜索:
使用C本機代碼運行應用程序並不意味着您可以通過JVM參數來控制整個內存的使用。 嘗試為系統運行內存監視(例如,在Linux上使用shift + m對TOP進行內存使用排序),或者更好地為內存配置應用程序。
運行應用程序后嘗試獲取內存轉儲(那里有一些性能分析工具,大多數IDE也提供某些功能)來檢查Java對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.