【发布时间】:2012-03-23 09:10:17
【问题描述】:
我的 Java 框架如下所示。
当我在系统启动后运行它几个小时时,它可以完美运行。由于它运行了 1 天 24 小时,因此我的应用程序或 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()
【问题讨论】: