Это приложение, в котором я работаю, имеет функцию загрузки отчетов (XLSX), DynamicReports 4.0 - это API, который мы используем для этого. Сбой приложения со следующей ошибкой:Почему мое приложение работает нормально локально и не работает на сервере с помощью java.lang.OutOfMemoryError: nativeGetNewTLA для того же объема данных?
weblogic.kernel.Default failed to schedule a request due to
java.lang.OutOfMemoryError: nativeGetNewTLA
at weblogic.work.SelfTuningWorkManagerImpl.getWorkAdapter(SelfTuningWorkManagerImpl.java:252)
at weblogic.work.SelfTuningWorkManagerImpl.schedule(SelfTuningWorkManagerImpl.java:148)
at weblogic.timers.internal.TimerManagerFactoryImpl$WorkManagerExecutor.execute(TimerManagerFactoryImpl.java:133)
at weblogic.timers.internal.TimerManagerImpl.execute(TimerManagerImpl.java:621)
at weblogic.timers.internal.TimerThread$Thread.run(TimerThread.java:277)
при попытке загрузить отчеты.
Точная точка, где он падает, когда он пытается построить отчет (он содержит три листа внутри него). Это происходит только с большим объемом данных (более 4 МБ), для меньшего объема он просто отлично работает.
Мы используем следующий сервер/JVM
Server - Weblogic 10.3.6
JVM- Jrockit 1.6
Это странно, что это приложение отлично работает в среде разработки (Windows XP, 64 бит, 3Гб ОЗУ) с арг памяти по умолчанию (даже для отчета с^МБ данных), где, когда он падает на сервере, который является Windows 2008 R2 с 4 ГБ RAM. Используемая JVM такая же, как и разработка env. Мы пробовали настройку памяти, установив следующие аргументы:
-XXtlaSize:min=16k,preferred=32k -XXlargeObjectLimit:32k
-XX:PermSize=48m
-XX:MaxPermSize=128m
Пробовал увеличение и уменьшение размера TLA только на провал.
Почему это хорошо работает при разработке и сбое в работе сервера? как определить основную причину и решение?
Примечание: Мы не можем использовать профилировщики на сервере, однако мы попробовали JrockitMission Control, который доступен с пакетом weblogic, и это не помогло.
Поддерживается ли эта версия JRockit? Я предлагаю вам обратиться к поддержке Oracle или перейти на более новую версию. –
спасибо за ваш отзыв Питер Лоури, нет, он не поддерживается, и это последняя и последняя версия Jrockit. Невозможно выполнить обновление. –