2013-08-04 45 views
2

我已經嘗試重新安裝Java幾次,但是一旦啓動我的應用程序,它就會一直崩潰。其他應用程序正常工作(例如Scenebuilder)。Java jvm無故崩潰 - 以管理員權限運行

的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錯誤報告對話框給了我兩個選擇:

  • 調試 - >否定退出代碼
  • 關閉 - >exit code 255

的應用使用最新的jdk7u25。 應用程序使用JavaFX 2(工作Scenebuilder應用程序也是如此)。沒有錯誤日誌或代碼以外的張貼在上面!

如果以管理員身份運行,應用程序將工作

任何幫助表示讚賞。

  • 的Windows 8的x64上的其他計算機
  • 運行沒有任何問題。
  • UAC已關閉
  • 崩潰是可重現的。應用程序gui出現後2-3秒。
+0

很難說。嘗試玩不同的值fox -Xmxn(前段時間我有一個類似的問題,限制內存的最大數量解決了我的問題) – morgano

+0

@morgano嘗試過。沒有改變任何東西。 –

回答

1

我會將此作爲評論發佈,但我沒有足夠的代表。首先,你能告訴我們你正在運行的Windows版本嗎? 98/2000/XP/VISTA/7/8?

將您的應用程序帶到另一臺計算機(使用相同的操作系統)並查看它是否也崩潰。如果是,請嘗試使用其他系列的另一個操作系統(linux/mac)。如果問題與OS的特定系列隔離,那麼問題可能依賴於程序中的特定方法調用。如果它只是你的電腦,那麼調試就會變得更加困難。如果這個問題發生在所有操作系統家族中,那麼懷疑是一個JVM錯誤。

如果您使用Windows Vista/7,請嘗試關閉UAC。有關您的用戶配置文件權限可能會阻止java訪問關鍵庫(來自錯誤轉儲User32.dll?)。如果這確實能解決您的問題,請再次嘗試使用不同UAC級別的您和另一臺計算機,並檢查問題是否與特定機器/ UAC級別隔離。

在應用程序啓動期間監視您的系統內存和堆大小,它可能只是您的應用程序實際填充了JVM沒有內存來生成hs_error_ *文件的所有可用RAM(這已發生我之前)。

如果一切都失敗了,我推薦使用調試器來確定應用程序失敗的位置。也許貼一個System.exit(0);在程序的不同部分查看是否在崩潰之前執行該部分。同時確定崩潰是否可預測(即在同一點vs失敗)失敗。可預測的崩潰在代碼觸發崩潰時提出了一些建議。如果您正在使用JNI,請使用虛擬方法臨時禁用它們以查看崩潰是否仍然發生。

這就是我所能說的......可以有十億個理由,希望你找到一個。

+0

到目前爲止感謝 - 我更新了這個問題。 –

+0

這是一個trillian overlay hook,它將「失敗」集成到java中。 –

+0

@DennisFischer很高興你發現你的問題! – initramfs