سؤال

أنا أستخدم Asant لتشغيل ملف XML الذي يشير إلى ملف nars.jar.

أحصل على "java.lang.outofmemoryerror: Java Heap Space" وأنا أبحث حول هذا.

لذلك لقد وجدت أنني بحاجة إلى ضبط "-xx: + heapdumponoutofmemorror"، لإنشاء ملف تفريغ للتحليل.

لقد قمت بتحرير ASANT.BAT وأضاف "-xx: + Heapdumponoutofmemorror" إلى Ant_opts:

set ANT_OPTS= "-XX:+HeapDumpOnOutOfMemoryError" "-Dos.name=Windows_NT" "-Djava.library.path=%AS_INSTALL%\lib;%AS_ICU_LIB%;%AS_NSS%" "-Dcom.sun.aas.installRoot=%AS_INSTALL%" "-Dcom.sun.aas.instanceRoot=%AS_INSTALL%" "-Dcom.sun.aas.instanceName=server" "-Dcom.sun.aas.configRoot=%AS_CONFIG%" "-Dcom.sun.aas.processLauncher=SE" "-Dderby.root=%AS_DERBY_INSTALL%"  

ولكن لا يمكنني العثور على أي ملف تفريغ. سوف أستخدم محلل الذاكرة Eclipse للتحليل عندما أجد تفريغ.

حاولت أيضا تعيين الخيار "-xx: heapdumppath = c: memdump bds.hprof"، ولكن لم يتم إنشاء تفريغ هناك.

أي شخص حصل على فكرة عما أفعله خطأ؟ شكرا مقدما

هل كانت مفيدة؟

المحلول

لقد وجدت أنه يمكنني استخدام VisualVM من الشمس للحصول على heapdump، ورؤيتها تعيش.

حل سهل

نصائح أخرى

إنه في دليل العمل للتطبيق (أي المكان الذي بدأته). لست متأكدا مما يحدث إذا لم يكن لدى العملية الامتيازات اللازمة للقيام بذلك. ربما، كتابة تفريغ سيفشل بصمت.

هل أنت متأكد من أن النملة هي العملية مع Oome؟ قد تكون عملية بدأت من قبل النملة.

أضف "-Debug" إلى Ant_opts للحصول على معلومات تصحيح الأخطاء.

هل ترى الأهداف التي تتم طباعتها أثناء التنفيذ؟

يمكنك أيضا شوكة العمليات المختلفة التي بدأتها نملة (ستبطئ الأشياء، ولكنها قد تساعد في عزل الجاني)

أخيرا، ربما تحتاج فقط إلى الذاكرة أكثر من الافتراضي. يضيف:

-Xms256m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=256m

إلى Ant_opts.

يبدو أن التطبيق الخاص بك يعمل على Windows. يجب أن يتم هرب مسار ملف Windows مع \. وبعد حسب مثالك، يجب أن تبدو exx: heapdumppath:

-XX:HeapDumpPath=c:\\memdump\\bds.hprof

إلى جانب "-xx: + heapdumponoutofmemoryError" هناك عدة خيارات أخرى لالتقاط مزيلات كومة كذلك.

UMM ... ماذا عن أي مكان java.io.tmpdir يشير؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top