2011-10-04 59 views
0

我有一個Java小程序,加載一個DLL。該DLL用於與第三方軟件接口。該DLL啓動第三方軟件,然後用於發送數據和從該軟件接收數據。我們偶爾會在加載dll時看到CPU使用率的高峯。尖峯與java.exe關聯,不與第三方軟件關聯。但是,只有在加載dll後纔會出現尖峯。這是一個非常簡單的問題的很多解釋。是否有可能,該DLL本身可能會消耗CPU,並且這會顯示在系統控制檯上,因爲java.exe會消耗大量CPU?能否將DLL加載到java中導致java.exe中的CPU使用率增加?

換句話說,給出一個狀態,其中java.exe似乎消耗了大量的CPU,這可能是由加載的dll引起的嗎?

謝謝

埃利奧特

+1

嘗試使用Process Explorer或以此方式查看該Java進程中硬實線程的堆棧跟蹤。如果dll出現在蹤跡中,那麼它很可能是罪犯(儘管它當然不是確鑿的證據)。 – eran

回答

2

是,當加載的DLL,它被加載 '到' 的過程。任何由dll使用的內存或CPU都將作爲加載它的進程的一部分進行報告。如果一個DLL函數在處理接收到的數據時觸發CPU,它將在加載該DLL的應用程序下報告。

如果您有process explorer,您可以打開進程的屬性。右鍵單擊一個進程並選擇屬性,然後轉到屬性對話框的線程選項卡。這可以顯示每個線程的CPU使用情況,並且每個線程都由映像(exe或dll)及其入口點標識。

+1

...但是,您不能使用該線程列出的exe/dll來可靠地判斷該dll是否導致您的多餘CPU使用率。你可能會得到錯誤的否定信息 - 該DLL可能會導致該exe文件列出的線程被使用。 –

相關問題