如果我在一夜之间离开我的Java程序,我会在java.exe中收到异常的进程终止错误

时间:2010-03-31 00:54:57

标签: java jogl

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

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

程序运行好几个小时,此时它以“Microsoft Visual C ++运行时库”退出错误:

   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文件夹?

1 个答案:

答案 0 :(得分:4)

鉴于它需要一夜之间,最可能的罪魁祸首是内存泄漏或视频驱动程序的问题。

检查视频驱动程序和DirectX是否是最新的。 Microsoft自动更新是不够的!您需要查看供应商的网站以获取视频驱动程序,并{0}}查看DirectX。

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

开始申请。
启动VisualVm。它位于名为jvisualvm.exe的jdb / bin目录中 注意:这些必须以同一个用户身份运行

您的申请应出现在申请表下的Local分支下 右键单击并选择Enable Heap Dump on OOME 右键单击并选择Open 现在检查Monitor选项卡。

一旦你的应用程序正在运行,堆和线程应该稳定并在处理任务并执行GC时显示为带有周期性锯齿的大致直线。

但是,如果这些行中的任何一条向上趋势,则表示存在问题。

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