كيف تحدد حجم بيرجن داخل تطبيق Java (أي ، برمجيا)؟
-
28-09-2019 - |
سؤال
هل هناك أي طريقة لقياس حاليا تستخدم حجم الجيل الدائم (بيرجين) داخل تطبيق Java الخاص بي؟ لا يمكنني استخدام أدوات التنميط الخارجية مثل VisualVM.
والأفضل من ذلك هو تقدير استهلاك الذاكرة لفئة Java في بيرجين. هل يتناسب تقريبا مع حجم ملف Bytecode؟
المحلول
يمكنك استخدام MemoryMxbean الذي يأتي مع JDK. لكنني لا أعتقد أن هناك طريقة للاستعلام عن استخدام بيرجين من داخل التطبيق الجري. مستندات عن MemoryMxbean.
نصائح أخرى
إذا لم تكن على 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