سؤال

Im غريبة ما المعنى الدقيق "ملتزمة" الذاكرة عندما تكون القيمة الاستعلام من MemoryUsage الدرجة.هذا الدرس يوضح أنها "ارتكبت يمثل مقدار الذاكرة (بالبايت) التي يتم ضمان أن تكون متاحة للاستخدام من قبل آلة جافا الافتراضية." هل هذا يعني أن الذاكرة قيد الاستخدام من قبل jvm العملية لا تتوفر عمليات أخرى حتى يتم تحريرها من قبل جافا العملية ، أو يعني أن جافا العملية ستكون ناجحة إذا كان يحاول أن تخصيص هذا المبلغ من الذاكرة ؟ أدرك أن هذا قد يكون تنفيذ محددة ولكن أنا مهتم فقط في نقطة ساخنة.

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

المحلول

ملتزمة حجم هو في الواقع تخصيص الذاكرة المستخدمة الحجم هو الحجم تستخدم لتخزين البيانات الفعلية (عند استخدامها ~= ارتكبت حان الوقت GC كبير وربما تزايد كومة).أقصى حجم هو الحد الثابت الذي كومة يمكن أن تنمو - إذا كان هذا لا يكفي JVM يلقي OutOfMemoryError.

إذا كانت الذاكرة هي التي ارتكبت فإنه بالتأكيد يمكن استخدامها.أيضا مناسبة فقط عندما JVM لن تكون قادرة على ارتكاب المزيد من الذاكرة (في حديث OS) هو إذا كان الجهاز هو خارج الذاكرة الظاهرية.

كل هذه الأحجام فقط ان اقول لكم حجم كومة المنطقة.JVM أخرى في مناطق الذاكرة وكذلك (موضوع مداخن ، JIT ذاكرة التخزين المؤقت ، إلخ.) كومة المنطقة عادة ما تكون أكبر ، وهذا يتوافق تقريبا مع عملية البصمة.

اثنين من الملاحظات:

  • إذا ارتكبت الحجم لا يصلح في الذاكرة الفعلية أجزاء من سيكون تبديل الصفحة الملف.وهذا يؤدي إلى كبيرة التباطؤ خلال GC وفي مثل هذه الحالات سوف تحسين أداء التطبيق عن طريق الحد من حجم كومة الذاكرة المؤقتة.
  • بعض أنظمة التشغيل تسمح مزدوجة حجز الذاكرة - يمكنك تخصيص بقدر ما تريد طالما أنك لا تحاول استخدامه (نسيت نظام التشغيل الذي كان من أحدهم ملء لي في)

نصائح أخرى

و"هل هذا يعني أن الذاكرة هي قيد الاستخدام من قبل عملية JVM وNOT المتاحة لعمليات أخرى" سيكون هو الصحيح. حتى في أقل من (أو يساوي) مقدار الذاكرة يرى OS كما تتخذها عملية JVM.

http://java.sun.com /j2se/1.5.0/docs/guide/management/jconsole.html (آسف لا المراسي لربط).

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