سؤال

في جافادوك PeachashMap.html, ، وقال انه

"يتم تخزين كل كائن رئيسي في نقطة الضعف بشكل غير مباشر مع مرجع مرجع ضعيف. وبالتالي سيتم إزالة المفتاح تلقائيًا فقط بعد مراجعها الضعيفة ، داخل وخارج الخريطة ، تم مسحها بواسطة جامع القمامة."

وثم

لاحظ أن كائن القيمة قد يشير بشكل غير مباشر إلى مفتاحه عبر pefidhashmap نفسه ؛ أي أن كائن القيمة قد يشير بقوة إلى بعض كائن المفاتيح الآخر الذي يشير كائن القيمة المرتبط به ، بدوره ، إلى مفتاح كائن القيمة الأول.

ولكن لا ينبغي استخدام كل من المفتاح والقيمة المرجع الضعيف في الضعيف؟ أي إذا كان هناك انخفاض في الذاكرة ، فإن GC ستحرر الذاكرة التي يحتفظ بها كائن القيمة (نظرًا لأن كائن القيمة على الأرجح يأخذ ذاكرة أكثر من كائن المفتاح في معظم الحالات)؟

وإذا حرر GC كائن القيمة ، يمكن أن يكون كائن المفتاح مجانيًا أيضًا؟

في الأساس ، أبحث عن hashmap الذي سيقلل من استخدام الذاكرة عندما يكون هناك ذاكرة منخفضة (تقوم GC بجمع القيمة والكائنات الرئيسية إذا لزم الأمر).

هل هو ممكن في جافا؟

شكرًا لك.

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

المحلول

المراجع الضعيفة غير مناسبة للذاكرة التخزين المؤقت - NetBeans تفعل ذلك ، ويمكن أن تصبح سخيفة.

SoftReference هو ما تريد. من الصعب للغاية في الواقع تصحيحها - لذا انسخ حل شخص آخر. ينصح بعض الناس بإدارة ذاكرة التخزين المؤقت بنفسك صراحة.

ReferenceS العمل فقط مع مرجع واحد. كان هناك اقتراح لإضافة "الأقطار" إلى Java SE ، لكنني لم أر تطبيقًا يذهب إلى أي مكان مع ذلك.

نصائح أخرى

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

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