Her şeyden önce, 8 gb ram'li bir kutum var, bu yüzden toplam belleğin sorun olduğundan şüpheliyim. Bu uygulama 6 gb ya da daha az ram'e sahip makinelerde sorunsuz çalışıyor.
Eclipse'teki Çalıştırma Yapılandırmalarında "VM Arguments" altında -Xmx3G kullanarak 3GB alan ayırmaya çalışıyorum.
Ne zaman 1500mb'den fazla ayırmaya çalışsam bu hatayı alıyorum: "VM başlatılırken hata oluştu; nesne yığını için yeterli alan ayrılamadı" -Xmx3G kullanarak
Burada neler oluyor?
Bu aslında Eclipse'e özgü bir sorun değil; genel bir sorun Java-on-Windows sorunu. Bunun nedeni JVM'nin Windows'ta bellek ayırma şeklidir. Windows; bitişik bir bellek yığını ayırmakta ısrar ediyor, bu da için yeterli sayıda ayrı parça olsa bile, Windows genellikle bunu sağlayamaz. tahsis talebini karşılar. Windows'un "belleğini birleştirmesine" yardımcı olmaya çalışan yardımcı programlar vardır, Bu teorik olarak bu duruma yardımcı olabilir; ancak gerçekten denemedim Bu yüzden etkinlikleri hakkında konuşamam. Bazen yardımcı olabileceğini duyduğum bir şey Windows'u yeniden başlatmaktır ve diğer uygulamaları başlatmadan önce, Java uygulamasını başlatın. büyük bir bellek yığını. Eğer şanslıysanız, Windows belleği parçalara ayırmamış olacaktır. Henüz bellek alanı yoktur ve Java istediği bitişik bloğu alacaktır.
İnternette bir yerlerde daha teknik açıklamalar ve Bu konuyla ilgili analizler var, ancak elimde herhangi bir referans yok.
Yine de yararlı görünen şunu buldum: https://stackoverflow.com/a/497757/639520
Eclipse'in aslında çalıştığını düşündüğünüz JVM'yi çalıştırdığından emin olun. Web tarayıcınızda java kullanıyorsanız, muhtemelen 32 bitlik bir sürümünüz de vardır ve son zamanlarda yüklendiyse veya güncellendiyse öncelikli olabilir.
Kesinlikle emin olmak için, bu iki satırı eclipse.ini
dosyanızın en üstüne eklemenizi öneririm:
-vm
C:/Java/jdk1.6.0_27/bin
...makinemde 64 bit olduğunu bildiğim JVM'nin bulunduğu C:/Java/jdk1.6.0_27/bin
nerede. Orada bin
klasörünün olduğundan emin olun.
(Bonus olarak, Windows 7'de bu aynı zamanda sekmeyi gerçekten "sabitlemenize" olanak tanır; bu yüzden kendi kullanımım için bunu yapmak zorunda kaldım)