خطأ java.lang.OutOfMemoryError: GC overhead limit exceeded — ماذا تفعل؟
مرحبًا بالجميع! أنا مطور Java مبتدئ، أكتب تطبيقًا صغيرًا لمعالجة السجلات. يقرأ البرنامج ملفًا نصيًا كبيرًا (حوالي 500 ميجابايت)، ويقسم الأسطر إلى كلمات ويجمع إحصائيات — كم مرة تظهر كل كلمة. أستخدم HashMap.
كان كل شيء يعمل بشكل طبيعي على الملفات الصغيرة، ولكن عندما شغّلته على بيانات حقيقية، بعد بضع دقائق ظهر الخطأ:
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
إليك الكود المبسط:
```java
public class LogAnalyzer {
public static void main(String[] args) throws IOException {
Map wordCount = new HashMap<>();
BufferedReader reader = new BufferedReader(new FileReader("large_log.txt"));
String line;
while ((line = reader.readLine()) != null) {
String[] words = line.split("\\s+");
for (String word : words) {
wordCount.merge(word, 1, Integer::sum);
}
}
```