سؤال

وأستخدمه محلل المغتربين لتحليل ملف XML من حوالي 15 GB. والمشكلة هي أنه يلقي خطأ "نفاد الذاكرة" وإحباط البرنامج.

وأريد أن أعرف واجهت أي هيئة مشكلة مشابهة مع محلل المغتربين أو أنها ليست علة معروفة، وقد تم تصحيحه في الإصدارات الأحدث؟

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

المحلول

ولقد استعملت المغتربين تحليل الملفات الكبيرة قبل وليس لديهم اي مشاكل. أفترض أنك تستخدم SAX وليس واحدا من الأغلفة DOM المغتربين. إذا كنت تستخدم DOM، ثم ان مشكلتك هناك حق - أنه سيكون اساسا بالسعي لتحميل الملف بأكمله إلى الذاكرة

هل تخصيص الأشياء كما كنت تحليل XML وربما لا إلغاء تخصيص لهم؟ ومن شأن ذلك أن يكون أول شيء أود أن تحقق ل. طريقة واحدة لمعرفة ما اذا كان المشكلة هي حقا مع المغتربين أو لا - إذا كنت تقليل برنامج إلى إصدار بسيط هو أن لديها فارغة العلامة معالجات (أي أنه فقط بتوزيع الملف ولا يفعل شيئا مع النتائج) أنها لا تزال نفاد الذاكرة؟

نصائح أخرى

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

وأنا أفكر أنه إذا كان لديك معالج المسجلة في نهاية كتلة كبيرة، ومن المتوقع أن يمر الكتلة إلى معالج المغتربين، ثم المغتربين يمكن أن ينفد من الذاكرة قبل انها قادرة على جمع تماما أن كتلة . كما قلت، أنا لا أعرف المغتربين، وحتى هذا قد لا يكون ممكنا، وأنا أسأل فقط.

وبدلا من ذلك، هل أنت متأكد من أن المغتربين هو المكان فقدان الذاكرة؟ يمكنني أن أتصور وضعا حيث كنت حفظ بعض المعلومات حول محتويات ملف XML، وهياكل البيانات الخاصة بك، وإما لأن البيانات كانت كبيرة جدا، أو بسبب تسرب الذاكرة في التعليمات البرمجية تسبب في الخروج من حالة الذاكرة.

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

والوافدة لديها التسريبات - لقد بدأت في استخدامه في ملقم المستمر منذ فترة طويلة، وأنا وجدت أن التسريبات باستمرار الذاكرة، سواء يتم تحرير محلل أم لا. أحدث الإصدارات من xmlparse.c لا حل هذه المشكلة، إخفاء فقط التسريبات الحالية.

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