Java jvm无故崩溃 - 以管理员权限运行

时间:2013-08-04 11:00:08

标签: java crash jvm privileges jvm-crash

我已经尝试过几次重新安装Java,但是一旦启动我的应用程序就会崩溃。其他应用程序工作正常(例如,Scenebuilder)。

JVM不返回错误日志文件,唯一可以获取的是:

  

WERF81A.tmp.WERInternalMetadata.xml

     

WER403.tmp.dmp

     

WER461.tmp.cab

     

WER3D3.tmp.appcompat.txt

hs_error_*文件完全缺失(或者我无法找到它)。 这是WERF81A.tmp.WERInternalMetadata.xml

的一部分
    <ProcessInformation>
        <Pid>6740</Pid>
        <ImageName>javaw.exe</ImageName>
        <CmdLineSignature>00000000</CmdLineSignature>
        <Uptime>6105</Uptime>
        <ProcessVmInformation>
            <PeakVirtualSize>4891078656</PeakVirtualSize>
            <VirtualSize>4882821120</VirtualSize>
            <PageFaultCount>82469</PageFaultCount>
            <PeakWorkingSetSize>195358720</PeakWorkingSetSize>
            <WorkingSetSize>183607296</WorkingSetSize>
            <QuotaPeakPagedPoolUsage>277440</QuotaPeakPagedPoolUsage>
            <QuotaPagedPoolUsage>261216</QuotaPagedPoolUsage>
            <QuotaPeakNonPagedPoolUsage>43232</QuotaPeakNonPagedPoolUsage>
            <QuotaNonPagedPoolUsage>43168</QuotaNonPagedPoolUsage>
            <PagefileUsage>564998144</PagefileUsage>
            <PeakPagefileUsage>574984192</PeakPagefileUsage>
            <PrivateUsage>564998144</PrivateUsage>
        </ProcessVmInformation>
    </ProcessInformation>
    <ProblemSignatures>
        <EventType>APPCRASH</EventType>
        <Parameter0>javaw.exe</Parameter0>
        <Parameter1>7.0.250.17</Parameter1>
        <Parameter2>51c4b1ff</Parameter2>
        <Parameter3>USER32.dll</Parameter3>
        <Parameter4>6.2.9200.16420</Parameter4>
        <Parameter5>505a9a92</Parameter5>
        <Parameter6>c0000005</Parameter6>
        <Parameter7>000000000003185a</Parameter7>
    </ProblemSignatures>

Windows错误报告对话框提供了两个选项:

  • 调试 - &gt;否定退出代码
  • 关闭 - &gt; exit code 255

该应用程序使用最新的jdk7u25。 该应用程序使用JavaFX 2(工作的Scenebuilder应用程序也是如此)。除了上面发布的内容之外,没有错误日志或代码!

如果以管理员身份运行,应用

任何帮助表示感谢。

  • Windows 8 x64
  • 在其他计算机上运行没有任何问题。
  • UAC已关闭
  • 崩溃是可重现的。申请gui出现后2-3秒。

1 个答案:

答案 0 :(得分:1)

我会将此作为评论发布,但我没有足够的代表。首先,您能告诉我们您正在运行的Windows版本吗? 98/2000 / XP / VISTA / 7/8?

将您的应用程序带到另一台计算机(具有相同的操作系统)并查看它是否也崩溃。如果是,请尝试来自不同系列的另一个操作系统(linux / mac)。如果问题被隔离到特定的OS系列,那么问题可能取决于程序中的特定方法调用。如果它只是你的计算机,那么调试就变得更加困难。如果所有OS系列都出现此问题,则怀疑是JVM错误。

如果您使用的是Windows Vista / 7,请尝试关闭UAC。您的用户配置文件权限可能阻止java访问关键库(从错误转储User32.dll?)。如果这确实解决了您的问题,请再次尝试使用具有不同UAC级别的您和另一台计算机,并检查问题是否与特定计算机/ UAC级别隔离。

在应用程序启动期间监视系统内存和堆大小,可能只是您的应用程序实际填写了JVM没有内存来生成hs_error_ *文件的所有可用RAM(这在我身上发生了)前)。

如果所有其他方法都失败了,我建议使用调试器来确定应用程序失败的位置。也许坚持使用System.exit(0);在程序的不同部分,看它是否在崩溃之前执行到该部分。还要确定崩溃是否可预测(即在同一点失败而不是随机失败)。可预测的崩溃表明代码触发了崩溃。如果您正在使用JNI,请使用虚拟方法暂时禁用它们,以查看崩溃是否仍然发生。

这就是我所能说的所有......这可能是十亿个理由,希望你找到那个。