java.lang.OutOfMemoryError: GC overhead limit aşıldı | Netgez.com
SORU
30 NÄ°SAN 2011, CUMARTESÄ°


java.lang.OutOfMemoryError: GC overhead limit aşıldı

(15-20) birkaç metin girdileri her ile çok sayıda (yüzlerce, binlerce) HashMap nesneleri oluşturan bir programda bu hatayı alıyorum. Bu Dizeler tüm toplanan (küçük miktarlar halinde kırılma olmadan) bir veritabanına gönderilmeden önce olmak zorunda.

Göre GüneÅŸ, hata olur "eÄŸer çok fazla zaman harcanan çöp toplama: daha fazla ˜ toplam süre harcanan çöp toplama ve daha az 2% yığın kurtarıldı, bir OutOfMemoryError olacak atılır.".

Görünüşe göre, bir komut satırı için JVM argümanları geçmek için kullanabilir

  • Yığın boyutunu artırarak, ile "-Xmx1024m" (veya daha fazla), ya da
  • Hata tamamen kontrol devre dışı bırakılması, ile "-XX:-UseGCOverheadLimit".

İlk yaklaşım iyi çalışır, ikinci bir java kadar biter.lang.OutOfMemoryError, bu sefer öbek hakkında.

Yani, soru şu: böyle bir program alternatiftir, özellikle kullanma durumu (yani, birkaç küçük HashMap nesneler) için? Eğer HashMap açık kullanırsam() yöntemi, örneğin, sorun uzağa gider, ancak veri HashMap içinde saklı öyle! :-)

Another discussion in StackOverflow about this problem

CEVAP
30 NÄ°SAN 2011, CUMARTESÄ°


Aslında bellek işlemi sorunsuz çalıştırmak için çalışan sensin. Akla gelen seçenekler:

  1. Daha fazla bellek bahsettiğiniz gibi, -Xmx512m gibi arasında bir şeyler denemek belirtin
  2. HashMap mümkünse aynı anda işlemek için nesneler daha küçük gruplar ile çalışmak
  3. Eğer yinelenen dizeleri bir sürü varsa, HashMap içine koyarak önce onları String.intern() kullanın
  4. Dava için ayarlamak için HashMap(int initialCapacity, float loadFactor) oluşturucu kullanın

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • Andrea Lewis

    Andrea Lewis

    14 Mart 2013
  • Hollyscoop

    Hollyscoop

    30 Ocak 2007
  • MikeyMacintosh

    MikeyM

    28 Aralık 2009