الحد من وحدة المعالجة المركزية/المكدس لاستدعاء طريقة Java؟

StackOverflow https://stackoverflow.com/questions/1081466

  •  22-08-2019
  •  | 
  •  

سؤال

أنا أستخدم مكتبة NLP (Stanford NER) التي تلقي أخطاء OOM لمستندات الإدخال النادرة.

أخطط لعزل هذه المستندات في النهاية ومعرفة الأسباب التي تسبب الأخطاء فيها، ولكن من الصعب القيام بذلك (أنا أعمل في Hadoop، لذلك أعلم أن الخطأ يحدث بنسبة 17٪ من خلال الانقسام 379/500 أو شيء من هذا القبيل) .كحل مؤقت، أود أن أكون قادرًا على تطبيق حد لوحدة المعالجة المركزية والذاكرة على هذه المكالمة تحديدًا.

لست متأكدًا من أفضل طريقة للقيام بذلك.أول ما أقوم به هو إنشاء تجمع سلاسل رسائل ثابت لموضوع واحد، واستخدام get() الموقوت في Future.هذا من شأنه أن يمنحني على الأقل حدًا لساعة الحائط والذي من المحتمل أن يساعد إلى حد ما.

سؤالي هو ما إذا كانت هناك أي طريقة للقيام بما هو أفضل من ذلك مع قدر معقول من الجهد.

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

المحلول

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

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

نصائح أخرى

لست على دراية بـ Hadoop، لكن لا تنس أن JVM الخاص بك سيكون له حد ضمني للذاكرة العليا مفروض عليه (64 ميجابايت للخادم، إذا كانت ذاكرتي صحيحة).سأتحقق من تكوين الذاكرة الذي يعمل به JVM الخاص بك (options هنا)

يمكنك تجاوز ذلك عن طريق تحديد الحد العلوي للذاكرة على النحو التالي:

java -Xmx512m

ل(على سبيل المثال) تعيين الحد إلى 512 ميجابايت.

يعد تعيين تخصيص وحدة المعالجة المركزية خارج نطاق JVM، وسيكون بمثابة آلية خاصة بنظام التشغيل (إذا كان بإمكانك القيام بذلك على الإطلاق)

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

وإذا كان كل ما نحاول القيام به هو معرفة الوثائق التي تحطمها، يجب عليك ان تضع قطع الأشجار حول الدعوة إلى المكتبة NLP "على وشك تعيين ثيقة س". عندما ترى OOM، فإن السجلات لمخطط يحتوي على وثيقة من العذاب. كما قلت لك، يجب عليك ثم تحديد ما هي خصائص تلك الوثيقة تسبب المكتبة لتحطم الطائرة.

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

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