gpt4 book ai didi

java - 如果我让 Java 程序过夜,我会在 java.exe 中收到异常进程终止错误

转载 作者:行者123 更新时间:2023-12-01 19:23:45 25 4
gpt4 key购买 nike

这是一个有点复杂的问题,我可以提供的信息很少,所以请耐心等待或忽略。

我正在开发一个小型 Swing/JOGL 程序,并尝试在我的程序中包含一个 java 运行时,以便我可以为我的用户简化 JVM 设置。我的程序正在运行一个批处理文件,该文件调用我打包的 java.exe,而 java.exe 又执行我的 jar 文件。

程序正常运行几个小时,然后退出并出现“Microsoft Visual C++ Runtime Library”错误:

   Runtime Error!
Program: \<path>\java.exe

abnormal program termination

我的问题是:

  1. 将 JRE 作为文件夹包含在我的程序中是否是解决我的问题的“正确”解决方案,即确保运行我的程序的稳定且一致的 JVM?简单地强制我的用户先安装 Java 会更好吗?

  2. 通过简单地包含为我的平台构建的 jre 的 bin 文件夹,我是否会遇到任何类型的配置问题?除了在执行 java.exe 时使用命令行选项之外,还有其他方法可以存储配置信息吗?

  3. 根据 C++ 错误消息和异常进程终止错误发生的条件,我猜测这与我的 JOGL 库有关,但是,程序在 APT 之前完全正常工作,当通过在线安装程序使用完全相同版本的 Java 时,程序运行完全正常,没有错误。

  4. 这可能是更基本的东西吗?是否有可能我只是没有正确进行垃圾收集,或者没有正确设置 GC 配置,因为我只是使用 JRE 安装的 bin 文件夹?

最佳答案

考虑到这需要一整夜的时间,最有可能的罪魁祸首要么是内存泄漏,要么是视频驱动程序出现问题。

检查视频驱动程序和 DirectX 是否是最新的。微软自动更新还不够!您需要检查供应商的网站以获取视频驱动程序和 Microsoft's site对于 DirectX。

如果这不能解决问题,则可能是内存泄漏。

开始您的应用程序。
启动 VisualVm。它位于 jdb/bin 目录下,名称为 jvisualvm.exe
注意:这些必须以同一用户身份运行

您的应用程序应显示在应用程序下的Local分支下。
右键单击并选择在 OOME 上启用堆转储
右键单击并选择打开
现在检查“监视器”选项卡。

一旦您的应用程序开始运行,堆和线程应该稳定下来,并在处理任务和执行 GC 时显示为带有周期性锯齿的基本直线。

但是,如果其中任何一条线呈上升趋势,则表示存在问题。

还有一些用于获取堆和线程转储的控件,可以更详细地检查它们。

关于java - 如果我让 Java 程序过夜,我会在 java.exe 中收到异常进程终止错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2549733/

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