Мой скелет Java выглядит примерно так, как показано ниже.
Который отлично работает, когда я запускаю его после загрузки системы на пару часов. Поскольку он работает 24 часа в течение 1 дня, у меня возникают проблемы с моим приложением или самой JVM, такие как проблемы с икотой / зависанием, при нажатии ничего не происходит, как he is dead
.
Это происходит несколько раз, я предполагаю, что проблема с памятью, когда она работает в течение длительного времени, JVM где-то вызывает это, но не само мое приложение, потому что первые пару часов у него нулевое время простоя. Приступайте только к длительной работе более 8 часов.
Пример:
public class Boot {
public static void main(String[] args) {
String myCmd = "java -cp /var/tmp/dist/App.jar main.main";
Runtime.getRuntime().exec(myCmd);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
private static void createAndShowGUI() {
new Thread(new Runnable() {
public void run() {
//Server port listener
}
}).start();
.....
window = new JWindow();
window.add("North", panelBgImg);
window.pack();
window.setLayout(new BorderLayout());
window.setSize(screen.width, screen.height + 1);
window.setLocationRelativeTo(null);
window.setAlwaysOnTop(true);
window.setVisible(true);
}
}
Как я могу убедиться, что JVM не приводит к зависанию моего приложения, есть ли способ модульного тестирования? Может ли это помочь решить эту проблему в долгосрочной перспективе?
например: System.gc() и Runtime.gc()