简体   繁体   English

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

[英]Java jvm crashes without reason - runs with admin privileges

I've already tried to re-install Java several times, but it keeps crashing once starting my application. 我已经尝试过几次重新安装Java,但是一旦启动我的应用程序,它就会不断崩溃。 Other applications work fine (eg Scenebuilder). 其他应用程序也可以正常工作(例如Scenebuilder)。

The JVM returns no error log file, the only thing that's possible to grab are: JVM不返回错误日志文件,唯一可以抓取的是:

WERF81A.tmp.WERInternalMetadata.xml WERF81A.tmp.WERInternalMetadata.xml

WER403.tmp.dmp WER403.tmp.dmp

WER461.tmp.cab WER461.tmp.cab

WER3D3.tmp.appcompat.txt WER3D3.tmp.appcompat.txt

The hs_error_* file is missing completly (or I can't locate it). hs_error_*文件完全丢失(或者我找不到它)。 This is part of WERF81A.tmp.WERInternalMetadata.xml 这是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>

The windows error reporting dialog gives me 2 options: Windows错误报告对话框为我提供了2个选项:

  • Debug -> negative exit code 调试->负退出代码
  • Close -> exit code 255 关闭-> exit code 255

The application uses the latest jdk7u25 . 该应用程序使用最新的jdk7u25 The application uses JavaFX 2 (so does working Scenebuilder application). 该应用程序使用JavaFX 2(正在运行的Scenebuilder应用程序也是如此)。 There's no error logs or codes other than posted above! 除上面发布的内容外,没有其他错误日志或代码!

The application will work if run as admin! 该应用程序将以管理员身份运行!

Any help appreciated. 任何帮助表示赞赏。

  • Windows 8 x64 Windows 8 x64
  • Runs on other computers without any problems. 在其他计算机上运行,​​没有任何问题。
  • UAC is turned off UAC已关闭
  • Crash is reproducible. 崩溃是可重现的。 2-3 Seconds after application gui shows up. 应用程序gui显示后的2-3秒。

I would post this as a comment but I don't have enough rep. 我会将其发布为评论,但是我没有足够的代表。 First of all can you tell us the version of windows you are running? 首先,您能否告诉我们您正在运行的Windows版本? 98/2000/XP/Vista/7/8? 98/2000 / XP / VISTA / 7/8?

Take your application to another computer (with the same OS) and see if it crashes too. 将您的应用程序移至另一台计算机(具有相同的操作系统),看看它是否也崩溃了。 If yes try another OS from a different family (linux/mac). 如果是,请尝试使用其他家族(linux / mac)的另一个OS。 If the problem is isolated to a particular family of OS then the problem might be dependent to a particular method call in your program. 如果问题是由特定的OS系列引起的,则问题可能取决于程序中的特定方法调用。 If its just your computer then it becomes much harder to debug. 如果只是您的计算机,则调试起来会变得困难得多。 If this problem happens to all OS families then suspect a JVM bug. 如果所有操作系统系列都发生此问题,则怀疑是JVM错误。

If your using Windows Vista/7, try turning off UAC. 如果您使用Windows Vista / 7,请尝试关闭UAC。 Something about your user profile privileges might be blocking java from accessing a critical library (from the error dump User32.dll?). 关于您的用户配置文件特权的某些内容可能会阻止Java访问关键库(错误转储User32.dll?)。 If this does solve you problems, once again experiment on yours and another computer with different UAC levels and check if the problem is isolated to a particular machine/UAC level. 如果这确实解决了您的问题,请再次在您的计算机和另一台具有不同UAC级别的计算机上进行试验,并检查问题是否仅在特定的计算机/ UAC级别被发现。

Monitor both your system memory and your heap size during application startup, it may just be that your application actually filled out all the available RAM that the JVM didn't have memory to produce a hs_error_* file (this has happen to me before). 在应用程序启动期间监视系统内存和堆大小,这可能只是因为您的应用程序实际上填满了JVM没有内存的所有可用RAM来生成hs_error_ *文件(这在我之前已经发生)。

If all else fails, I recommend using a debugger to determine where the application fails. 如果其他所有方法均失败,则建议使用调试器确定应用程序在哪里失败。 Maybe stick a System.exit(0); 也许坚持一个System.exit(0); at different parts of your program to see if it executes to that part before crashing. 在程序的不同部分查看它是否在崩溃前执行到该部分。 Also determine if the crash is predictable (ie fails at the same point vs randomly failing). 还要确定崩溃是否可预测(即,在同一点失败而随机失败)。 A predictable crash suggests something in the code triggering the crash. 可预见的崩溃提示代码中触发崩溃的某些内容。 If you are using JNI, temporarily disable them with dummy methods to see if the crash still happens. 如果您使用的是JNI,请使用虚拟方法暂时将其禁用,以查看崩溃是否仍然发生。

Thats all I can really say... It can be a billion reasons, hope you find the one. 以上就是我真正能说的...可能有十亿个原因,希望您能找到。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM