2013-11-22 3 views
1

My Application (настольное приложение) через следующие исключения вСоздается файл JVM Crash hs_err_pidXXXX.log. Но HPROF файл не генерируется

java.lang.OutOfMemoryError: requested 4096000 bytes for GrET in C:\BUILD_AREA\jdk6_12\hotspot\src\share\vm\utilities\growableArray.cpp. Out of swap space? 

Каковы возможные причины выше ошибки.

Здесь аргумент JVM, которые установлены

VM Аргументы:

jvm_args: -Dsun.net.inetaddr.ttl = 10 vfprintf выхода прервать -Xms5242880 -Xmx1711276032 -XX: NewSize = 2621440 -XX : MaxNewSize = 855638016 -XX: + HeapDumpOnOutOfMemoryError -Dsun.rmi.dgc.server.gcInterval = 60000 -Dsun.rmi.dgc.client.gcInterval = 60000 -Djava.security.properties = wigan.java.security -Xss512K

--------------- СИСТЕМА ---------------

O S: Windows NT 6.1 Build 7601 с пакетом обновления 1

CPU: всего 24 (16 ядер на процессор, 2 потока на сердечник) Семейство 6 модель 13 степпинг 7, cmov, cx8, fxsr, mmx, sse, sse2, sse3, SSSE3, ХТ

Память: 4k страница, физическая 4194303k (4194303k бесплатно), обмен 4194303k (4194303k бесплатно)

vm_info: Java HotSpot (TM) сервер VM (11,2-b01) для Windows-x86 JRE (1,6 .0_12-b04), построенный 17 января 2009 г. 09:52:33 по «java_re» с MS VC++ 7.1

Я добавил -XX: + HeapDumpOnOutOfMemoryError к параметрам jvm, но это jvm не сбрасывало кучу, Я никогда не нахожу. hprof. Зачем?

Является ли обязательным, что когда создается файл hs_err_pidXXXX.log, файл hprof также создается?

ответ

2

Когда OutOfMemoryError сопровождается «Вне пространства подкачки?» ошибка возникла при попытке выделить ресурсы на уровне. В вашем случае кажется, что внутренняя C++-процедура не позволяет выделить нужную память. Это, по-видимому, является причиной того, что кучи-дамп не создаются: при сбое на собственном уровне встроенная обработка ошибок VM может не иметь шансов на успех - в отличие от ошибок на уровне java, например, (ява) кучного пространство.

По умолчанию пользовательское пространство Windows NT составляет 2 ГБ, так как ваша куча java уже равна 1,7 ГБ, для памяти без кучи осталось немного запаса, и ваше приложение, похоже, врезается в потолок.

Там две вещи, которые вы можете попробовать, чтобы исправить ошибку:

  • уменьшить Xmx, чтобы обеспечить более не-кучи-памяти
  • попробуйте установить параметр загрузки/3GB (не уверен, погода это поддерживается в вашей Windows-версии), что позволяет уменьшить пространство до 1 ГБ и тем самым увеличить пользовательский пространство 3ГБ
+0

Можете ли вы предложить размер Xmx для уменьшения. Спасибо. – Chandana

+0

Это действительно зависит от вашего приложения - вы можете начать с '-Xmx 1024m', и если вы исчерпаете пространство кучи, увеличьте его немного. –

2

цитирование Memory Analyzer wiki:

Heap dumps are not written on OutOfMemoryError for the following reasons:

  • Application creates and throws OutOfMemoryError on its own
  • Another resource like threads per process is exhausted
  • C heap is exhausted

As for the C heap, the best way to see that you won't get a heap dump is if it happens in C code (eArray.cpp in the example below):

# An unexpected error has been detected by SAP Java Virtual Machine: 
# java.lang.OutOfMemoryError: requested 2048000 bytes for eArray.cpp:80: GrET*. Out of swap space or heap resource limit exceeded (check with limits or ulimit)? 
# Internal Error (\\...\hotspot\src\share\vm\memory\allocation.inline.hpp, 26), pid=6000, tid=468 

C heap problems may arise for different reasons, e.g. out of swap space situations, process limits exhaustion or just address space limitations, e.g. heavy fragmentation or just the depletion of it on machines with limited address space like 32 bit machines. The hs_err-file will help you with more information on this type of error. Java heap dumps wouldn't be of any help, anyways.

Also please note that a heap dump is written only on the first OutOfMemoryError. If the application chooses to catch it and continues to run, the next OutOfMemoryError will never cause a heap dump to be written!

Если .hprof создан, это было бы так сказал во время сообщения об ошибке.Обратите внимание, что в окнах файл не будет находиться в папке приложения, но либо в папке temp, либо в папке установки Dr. Watson.

Однако, поскольку «из пространства подкачки» явно указано как причина не писать кучу кучи, я думаю, что это то, что происходит.

Смежные вопросы