簡體   English   中英

Java Web Start應用因OutOfMemoryError崩潰

[英]Java web start app crashes with OutOfMemoryError

我擴展了基因組學查看器,提供了約翰霍普金斯實驗室要求的某些功能。 當我從命令行運行該應用程序時,似乎沒有內存問題-該應用程序已使用-Xmx750m啟動。 但是,當我使用以下堆設置運行與Web啟動應用程序相同的應用程序時:

  <java initial-heap-size="67108864" max-heap-size="1205862400" version="1.5+"/>

一段時間后,應用程序因OutOfMemoryError崩潰而崩潰:

ERROR [2011-01-12 16:28:22,437]  [DefaultExceptionHandler.java:42] [AWT-EventQueue-0]  Unhandled exception
java.lang.OutOfMemoryError
 at java.util.zip.Inflater.init(Native Method)
 at java.util.zip.Inflater.<init>(Unknown Source)
 at java.util.zip.Inflater.<init>(Unknown Source)

本地應用程序和Web-start應用程序之間沒有什么區別,除了我已經簽名了在Web-start jnlp文件中調出的jars。 我嘗試使用JConsole和YourKit Java分析器將其附加到Web-start應用程序。 在每種情況下,我都通過調用HotSpotDiagnostic MBean的setVMOption操作來打開HeapDumpOnOutOfMemoryError屬性。 但是當應用崩潰時,不會生成堆轉儲。

在我看來,崩潰與在網絡啟動下運行有關。 我已經盡力在桌面應用程序上導致OutOfMemoryError-通過減少內存(-Xmx250m); 這會導致應用程序暫停很長一段時間(最多5分鍾),同時大概完成了垃圾收集。 但是,該應用程序總是在暫停后恢復運行-絕不會崩潰。

誰能告訴我在Web啟動下捕獲OutOfMemoryError上的堆轉儲的方法嗎? 但是,我懷疑我實際上可能根本沒有用完堆。 但這至少是一個起點。

我盡力了-任何幫助將不勝感激。

我在Windows XP-SP2上運行Java 1.6.0_20-b02。

昨天我剛剛解決了一個非常類似的問題,我通過調用Deflater.end()解決了此問題(有關更多信息,請參閱此問題 )。 我在序列化過程中遇到了OutOfMemoryError異常,但是由於某些原因,僅當將其部署為Webstart時,無論Xmx如何,我都無法在Eclipse或可執行jar中重復該問題。

我也在我的應用程序中看到了這一點。 就我而言,這是由JAR損壞引起的。 嘗試是否已簽名的jar仍然有效(嘗試在Winzip或其他zip工具中打開它們-我最喜歡的是TotalCommander中的CTRL + PGDOWN ;-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM