Я расширил программу просмотра геномики с некоторыми функциями, запрошенными Лабораторией Джонса Хопкинса. Когда я запускаю приложение из командной строки, у меня, похоже, нет проблем с памятью - приложение было запущено с -Xmx750m. Тем не менее, когда я запускаю же приложение в качестве веб-запуска приложения со следующими параметрами кучи:Сбой приложения для веб-браузера Java с OutOfMemoryError
<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)
Там нет никакой разницы между приложение для локального приложения и веб-старта, за исключением того, что я подписал банки, которые вызывают в файле jnlp для веб-запуска. Я попытался подключиться к приложению веб-старта с помощью JConsole и профилировщика MyKit Java. В каждом случае я включил свойство HeapDumpOnOutOfMemoryError, вызвав операцию setVMOption для MBean HotSpotDiagnostic; но при сбое приложения не создается дамп кучи.
Мне кажется, что авария связана с запуском под веб-запуском. Я очень старался вызвать OutOfMemoryError для настольного приложения - уменьшив память (-Xmx250m); это приводит к приостановке приложения в течение длительных периодов времени (до 5 минут), пока, предположительно, сбор мусора. Но приложение всегда возобновляется после паузы - никогда не сбой.
Может ли кто-нибудь сказать мне способ захвата кучи-дампа в OutOfMemoryError под веб-запуском? Хотя, я подозреваю, что на самом деле у меня может не хватить кучи. Но, по крайней мере, это будет место для начала.
Я нахожусь в конце своего ума - любая помощь будет принята с благодарностью.
Я запускаю Java 1.6.0_20-b02 на Windows XP-SP2.
Любая конкретная причина, по которой вы не используете обновленную версию Java? –
Нет. Считаете ли вы, что это может помочь? Кроме того, когда приложение для веб-старта используется другими людьми, оно может быть слишком ограничительным, чтобы требовать «последнюю» версию Java. Однако, если запуск последней версии может помочь мне изолировать и исправить мою проблему, это определенно стоит попробовать. Знаете ли вы о каких-либо инструментах/функциях в более поздних версиях, которые помогли бы уменьшить эту проблему? Благодаря! –