Kendi portunda bir com portundan veri okuyan ve bir veritabanına koyan bir java programı yazdım. İstisnalar oluştuğunda (veritabanı veya com) runtime.exec ile kendini yeniden başlatır. Bir günden ya da sonra program bazen donuyor. Bunun tam olarak gerçekleştiğini takip edemiyorum ama bir süre sonra olduğu görülüyor. Sizden biri sorunun ne olabileceğini biliyor mu? Teşekkür ederiz! sadece IO durumları yakalamak ve Runtime.exec yaparsanızJava programı donuyor
cevap
, nedeniyle çok fazla JVM'lerle için, bellek yetersiz alabilirsiniz ... Eğer eski program emin (ve JVM) Are tamamen gitti yeni yaparken Runtime.exec? Yani, @extraneon'un söylediği gibi, programınızın programınızın başka bir örneğini oluşturmayacağından emin misiniz?
yazılımınızı uygulanan yönteme bağlı bir tasarım sorun olabilir.
Bir starter uygulamasından Runtime.exec() kullanırsanız, bu iyi olur. Eğer böyle bir şey varsa:
try {
doStuff();
} catch(Throwable t) {
Runtime.exec(...);
}
Eğer yazılımın birden fazla kopyası her bazı kaynaklar alarak ve asla bu geri vererek çalışan alacak. Böyle bir durumda, sadece arızalı ipliği temizlemeli ve yeni bir iş parçacığı başlatmalısınız (eğer mümkünse).
Daha açıkçası, bana göre bir marş uygulaması ana içinde olan bir şeydir pek fazla: Eğer() Runtime.exec ile süreçleri başlıyor stdout tüketiyor
while(true) {
Process p = Runtime.exec(your COM communication program);
if (p.waitFor() == 0 { // Clean exit
break; // exit while loop.
}
// Otherwise p closed with an error and a new process should be started
// which is done in the next iteration of the loop
}
ve stderr akışları? Hayır ise, uygulama işletim sistemi arabelleği dolduğunda donuyordu. Uygulama ne kadar çıktı üretirse ve ne sıklıkta istisnalar atarsa, sayılarınız değişebilir.
- 1. 'ab' programı birçok istekten sonra donuyor, neden?
- 2. Hata ayıklama programı başka bir makinede donuyor
- 3. Bir Java programı ile ... bir Java programı ile ...
- 4. Java Desen Programı Hata
- 5. Derleme Java programı kaçak
- 6. Basit Java GUI Programı
- 7. Bu java programı ne yapar?
- 8. java programı, Wildfly sunucusuyla dağıtılmadı
- 9. Benim java soket programı, Eclipse
- 10. Celsius - Fahrenheit GUI Programı [Java]
- 11. Bir Java programı tarafından hangi sınıflar kullanılır?
- 12. Windows programı java uygulamasına nasıl gömülür?
- 13. Java Bowling Programı - 10. Çerçeve Ekleme
- 14. Windows başlangıcında Java Swing Run programı
- 15. tutulması Java çoklu programı hata giderme
- 16. start-stop-daemon ve java programı
- 17. SystemGuid.Keyboard benim Programı
- 18. Android Emulator donuyor
- 19. StackExchange.Redis işlem yöntemleri donuyor
- 20. Windowsda bash neden donuyor?
- 21. Docker: SSH girişte donuyor
- 22. .java dosyalarını derlemek için bir java programı geliştirme
- 23. Başka bir java programından bir java programı çalıştırma
- 24. programı
- 25. Uygulama tweet gönderdikten sonra donuyor
- 26. Komut pencerem 10 neden donuyor?
- 27. Xcode dalları değiştirirken daima donuyor
- 28. C# uygulama tüm sistemi donuyor
- 29. genymotion tüm Ubuntu Masaüstü'nü donuyor
- 30. java programı kullanılarak yapılan değişiklikleri geri alma nasıl yapılır
Bağlantı noktası veya okuma verisi ne sıklıkla dinlenir? –
Bu, bir noktada uygulamanızın uygulamanızın başka bir kopyasını çalıştıran, uygulamanızın başka bir kopyasını çalıştıran ve bunun gibi (istisna sayısına bağlı olarak) olduğu anlamına mı geliyor? – extraneon
Olası http://stackoverflow.com/questions/25385173/what-is-a-debugger-and-how-can-it-help-me-diagnose-problems çoğaltması – Raedwald