FileUtils.readFileToByteArray رمي java.lang.OutOfMemoryError: جافا خطأ مساحة كومة

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

  •  06-07-2019
  •  | 
  •  

سؤال

وأستخدمه أباتشي العموم IO fileutils حكومة الوحدة أداة لقراءة الملف إلى صفيف بايت. الملف هو 1.13 غيغا بايت في الحجم. في كل مرة يتم استدعاء هذا الأسلوب، وأحصل على خطأ من الذاكرة. لدي هذا الركض على خادم ويندوز سيرفر 2008 64 بت مع 8GB من الذاكرة. في المرة الأولى التي حصلت على هذا الخطأ، أنا فتحت الأداة المساعدة لتكوين القط 6 و تعيين الذاكرة الأولية إلى 1024 والحد الأقصى ذاكرة تجمع ل2048. لقد حاولت منذ 3072 و4096 للذاكرة تجمع الحد الأقصى أيضا. في كل مرة، وأنا إعادة تشغيل خدمة القط بحيث يتغير ستتخذ. أيا من هذه التغييرات إصلاح هذه الأخطاء. لماذا ا؟ أنا باستخدام جافا 1.6 التحديث 14.

attachment.setData(FileUtils.readFileToByteArray(attachmentFile));
هل كانت مفيدة؟

المحلول

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

FileInputStream fis = new FileInputStream(attachmentFile);
BufferedInputStream bis = new BufferedInputStream(fis);
byte[] buffer = new byte[(int)attachmentFile.length()];

bis.read(buffer);

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