Java'da, bellek bitmeden hemen önce bir şey yapmanın bir yolu var mı? Örneğin, önceki belge durumlarının bir listesini (geri almak için) tutmak ve bellek tükenmek üzereyken yalnızca çok eski durumları kaldırmak mı? ÖrneğinBellek bitmeden hemen önce bir şey yapın
cevap
, (geri al) Önceki belge durumlarının listesini tutmak ve bellek tükenebilir üzere olduğunda yalnızca çok eski durumları kaldırır?
SoftReference
ile bir şeyler yapabilirsiniz. Ayrıca java.lang.ref paketinin genel belgelerine de dikkat edin. Nesnelere yalnızca bir SoftReference
aracılığıyla erişilebiliyorsa, yetersiz bellek hatası oluşmadan önce bunlar toplanacaklardır. Bununla birlikte, VM'lerin bu tür bir olaydan önce bu referansları saklamasının gerekmediğini veya hangi sırayla temizlenebileceğine dair herhangi bir garanti vermediğini unutmayın. Bunları, bir tür kalıcılık ile en iyi şekilde birleştirebilirsiniz.
Evet, kesinlikle mümkündür.
Muhtemelen önceki belge durumlarınız için SoftReference s listesini kullanırdım. Bellek yetersizliği oluşmadan önce bunların imha edilmesi garanti edilir.
Bazı periyodik aralıklarla, boş referansları listeden temizleyebilirsiniz.
hep en az bir :-) geri garanti edemez böylece aynı zamanda en son durumuna normal bir başvuru tutarak öneriyoruzBu JVM uygulanmasına bağlıdır, ancak eğer şanslıysanız JVM şunu yapacaktır En yeni eyaletleri tutun ve en eskileri atın. Bu, JVM özelliklerinde kesinlikle gerekli değildir, ancak önerilen davranıştır.
- 1. Symfony2'den hemen sonra başarıya giriş yapın ve yönlendirme yapmadan önce bir şey yapın?
- 2. Animasyon tamamlama bloğu bitmeden önce mi çalışıyor?
- 3. İlkbaharda Oturum bitmeden önce özel etkinliği gerçekleştirin
- 4. iframe olayından hemen önce iframe
- 5. Android'de etkinlik bitmeden önce iş parçacığı öldürülecek mi?
- 6. Tüm std :: futures bitmeden önce işlevden dönmek güvenli midir?
- 7. Mac uykudan hemen önce yürütme komutu
- 8. çağrı nihayet sistem çıkışından hemen önce
- 9. Program çıkışından önce bir şey yapmak
- 10. Sabit navbardan önce bir şey yazıyor
- 11. Bir şey yapmadan önce javascript asp.net anypostback
- 12. VS2013: Bellek uzmanı belirli bir projede bir şey göstermiyor
- 13. QLabel setText, başka bir yöntemi çalıştırmadan hemen önce metni görüntülemiyor
- 14. vba: yalnızca her döngü için bir şey yapın
- 15. Süre bitmeden dışarı ... Wend döngü
- 16. Link, javascript onclick işlevi bitmeden sayfayı yönlendiriyor
- 17. Daha önce ne kadar bellek kabalaşır?
- 18. Python Scrapy işlevi spider_closed sinyali gönderilmeden hemen önce çağrılacak mı?
- 19. Niçin yerel değişkene atamadan önce hemen başlangıç değeri verin?
- 20. Python üreteci işlevinin ilk verimden hemen önce ilerlemesi
- 21. Gerçekten flush() 'ı bugün hemen önce kapatmalı mıyız?
- 22. Bir Adodb.recordset nesnesini hiçbir şey yapmadan önce kapatmak gerekli mi?
- 23. böyle bir şey yaptım RC1 önce filterContext.Cancel (ASP.NET MVC)
- 24. Ben açısal yeni hemen hemen olduğum
- 25. GitHub hemen hemen aynı ada sahip 2 klasörü birleştirin
- 26. Böyle bir şey yapmak istiyorum Açıklamalar
- 27. UIMenuController sunulduğunda hemen reddediliyor
- 28. Matlabda saydam bir piksel yapın
- 29. RxJS: hemen başlayan bir aralık
- 30. Bir sayı yapın Yüzde
http://stackoverflow.com/questions/2679330/catching-java-lang-outofmemoryerror 'nin olası kopyası, http://stackoverflow.com/questions/1692230/is-it-possible-to-catch-out- bellek-istisna-in-java ve http://stackoverflow.com/questions/3058198/can-the-jvm-recover-from-an-outofmemoryerror-without-a-restart – BalusC
Onlar OOME yakalamak hakkında bunun olmasını engellemekle ilgili. –