سؤال

  1. هل هناك أي طريقة لقياس حاليا تستخدم حجم الجيل الدائم (بيرجين) داخل تطبيق Java الخاص بي؟ لا يمكنني استخدام أدوات التنميط الخارجية مثل VisualVM.

  2. والأفضل من ذلك هو تقدير استهلاك الذاكرة لفئة Java في بيرجين. هل يتناسب تقريبا مع حجم ملف Bytecode؟

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

المحلول

يمكنك استخدام MemoryMxbean الذي يأتي مع JDK. لكنني لا أعتقد أن هناك طريقة للاستعلام عن استخدام بيرجين من داخل التطبيق الجري. مستندات عن MemoryMxbean.

نصائح أخرى

يمكنك استخدام JVISUALVM أداة من JDK مع GC المرئي البرنامج المساعد لمراقبة جميع مناطق كومة JVM بما في ذلك بيرجين.

إذا لم تكن على Windows ، فيمكنك المحاولة JMAP الذي يتم شحنه مع JDK.

يمكنك استخدام ال jmap يأمر:

JMAP [الخيار] (للاتصال بعملية التشغيل)

JMAP [الخيار] (للاتصال بملف أساسي)

JMAP [الخيار] [server_id@] (للتواصل مع خادم التصحيح عن بُعد)

حيث الخيارات هي واحدة من:

-هاب: لطباعة ملخص كومة جافا

-Permstat: لطباعة إحصائيات الجيل الدائم

لا علاقة لحجم بيرجن بحجم ملفات الفصل. الحجم الافتراضي لـ Permgen وفقًا للشمس هو 64 ميغابايت. إذا كنت ترغب في زيادة ذلك ، يمكنك تعيينه بشكل صريح باستخدام:

-XX:PermSize=164m

في سطر أوامر Java الخاص بك أو البرنامج النصي بدء التشغيل. هذه هي أيضًا الطريقة التي يمكنك بها معرفة ما تم تعيينه دون الاعتماد على أداة خارجية.

تعديل:

اقرأ هذه المقالة لتحديد ما يقرب من مقدار permgen الذي يتم استخدامه حاليًا برمجيًا (أي لا توجد أدوات خارجية):

http://frankkieviet.blogspot.com/2006/10/how-to-fix-derved-permgen-space.html

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