gpt4 book ai didi

Java - 我怎样才能让我的应用程序长期稳定运行,这样它就不会打嗝,卡住?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:21:13 25 4
gpt4 key购买 nike

我的 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()

最佳答案

如果您的应用卡住,原因很可能是某种死锁,而不是内存不足错误。在后一种情况下,JVM 只是异常终止。所以我敢打赌,调用 GC 不会对你有帮助。

像这样的错误很难准确捕获,因为它们很难可靠地重现。不过,您有几个选择:

  • 将调试日志打印输出插入您的代码以获取有关正在发生的事情的更多线索,然后分析在您的应用卡住之前/期间生成的日志
  • 当您的应用程序卡住时停止 JVM(使用 kill 命令或 Linux 控制台中的 Ctrl+\,Windows 中的 Ctrl+Break)- 它将显示线程转储信息,列出所有正在运行和死锁的信息线程
  • 在附加 VisualVM 的情况下运行您的应用以查看内存使用模式

关于Java - 我怎样才能让我的应用程序长期稳定运行,这样它就不会打嗝,卡住?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9836496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com