سؤال

هل من الممكن إخبار JVM بتلميح نظام التشغيل إلى أنه من الأفضل عدم دفع كائن معين للخارج لمبادلة المساحة؟

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

المحلول

والجواب باختصار هو لا.

وجافا لا يسمح لك أي السيطرة على ما يتم تبديل في وما هو "دبس" في RAM.

والقلق حول هذا النوع من الشيء وعادة ما يكون علامة على أن هناك مشكلة أخرى في المشروع. إرادة OS على العموم القيام بعمل أفضل بكثير من العمل بها ما ينبغي تبادلت وما لا ينبغي. عملك هو لكتابة البرامج الخاصة بحيث لا تحاول أن ننتقد ما وراء VM / OS يجري القيام به، فقط التركيز على تقديم مزايا والتصميم الجيد.

نصائح أخرى

لقد كانت هذه المشكلة أيضا ملحوظ جدا في الكسوف وKeepResident القذرة المساعد الإختراق ( HTTP: // suif.stanford.edu/pub/keepresident/ ) يتجنب ذلك.

قد يكون مكانا جيدا للبدء؟ أنا لم أر ذلك في الاستخدام واسع النطاق لذلك ربما هذا تم دمجها في توزيع الكسوف القياسية؟

وياه! كنت البرمجة بلغة المدارة. لماذا تفكر في هؤلاء؟ إذا لم تتمكن من الحصول على هذه الاشياء من عقلك، يمكنك دوما اختيار البرنامج في C.

الجواب القصير هو (كما هو مذكور أعلاه):لا تفعل ذلك :-).

ومع ذلك، فإنه سيكون ممكنا من حيث المبدأ.تسمح معظم أنظمة التشغيل "بقفل" مناطق معينة من الذاكرة بحيث لا يتم تبديلها (على سبيل المثال. ملوك(2) ضمن Linux، VirtualLock ضمن Windows).

يمكن أن يعرض VM هذه الوظيفة لتطبيقات Java عبر واجهة برمجة التطبيقات (API) المناسبة.ومع ذلك، لا أعرف أي جهاز افتراضي يفعل ذلك، لذا للقيام بذلك، سيتعين عليك أولاً تعديل الجهاز الافتراضي الخاص بك...

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

وليس جوابا، ولكنها تفتقر تشير إلى التعليق، وحجز هذا الخيار:)

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

و(غير جافا) أصلا وربما هناك طريقة للقيام بذلك لكل / معظم أنظمة التشغيل. مع ويندوز هذا ممكن بالتأكيد. ولكن ليس مباشرة من جافا (اعتقد JNI). اعتمادا على كيفية يائسة هذا الخيار هو، هل يمكن أن ننظر دائما في استخدام ذاكرة الفيديو، أو بعض الأجهزة الأخرى التي لا مبادلة خارج. هذا يسمح لك الاستمرار في استخدام standardish جافا المعهد، مثل jogl لتخزين المعلومات. ولكن ما أشك في أن يكون في السياق مع التنفيذ / النتائج التي كنت تبحث عنها.

وأساسا كنت ترغب في الاحتفاظ JVM كله في الذاكرة الرئيسية طوال الوقت.

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