我想在我的Java應用程序上運行jstack命令。應用程序是相當大的,運行在佔用大約4GB內存的jboss AS內部。 OS是Windows Server 2003標準版。每當我收到錯誤「沒有足夠的存儲可用於處理此命令」。有足夠的RAM,16GB和磁盤空間。那麼,有什麼想法?Jstack和沒有足夠的存儲空間可用來處理此命令
回答
我最近就遇到了這個在Win2008r2我想我會分享我的解決方案,因爲它花了一段時間來弄清楚。 Rob's comment about psexec -s是什麼對我來說。
看來,在Vista和更高版本jstack不反對,因爲用戶上下文的服務工作。它與記憶無關。我懷疑這和人們在2003年通過遠程桌面看到這個問題的原因是一樣的,除非你在mstsc上使用/ admin或/ console開關。從Vista開始,收緊的安全性可能會破壞它。
開始從cmd窗口我的應用程序工作正常,但是這並不能幫助我調試我們的標準安裝。啓用Java調試端口(對於VisualVM,Eclipse或大多數Java調試器)需要重新啓動應用程序,因此如果您尚未啓用調試,則會失去可能嘗試捕獲的狀態。在我的用戶憑據下啓動服務不起作用 - 我對此有點驚訝。但是psexec -s從系統上下文中運行jstack,它像魅力一樣工作。哦,如果UAC處於打開狀態,則需要從提升的cmd提示符下運行psexec。
我們必須在Windows機器上運行JStack甚至適度的應用程序(1GB)的問題。我們最終使用Netbeans進行堆棧和堆分析。這似乎應對了轉儲文件的解析好得多。因人而異。
讓Netbeans嘗試進行性能分析 - 這非常好。請注意,VisualVM是一款簡化的NB分析器,並附帶6u7。
在過去,當JVM是在Windows 2003上
首先運行作爲Windows服務我已經看到了這一點,請檢查是否這是一個issue with the TMP directory。
其次,除非是在同一個會話中運行jstack(或其他公用設施的JConsole一樣)將不會連接到本地的過程。如果服務以特定用戶身份運行,則可以通過登錄到同一會話進行連接。如果您使用的是遠程桌面,則可以使用「mstsc/admin」(曾經是/ console)進行連接,並嘗試再次運行jstack。肯定檢查以確保TMP目錄設置正確,如果這不能解決問題。
如果服務作爲LocalSystem運行,上述過程可能不會有太大的幫助。我不知道是否有辦法登錄到LocalSystem所在的同一個會話中。
一些其他的替代品可能是設置過程長達進行遠程監控和使用jvisualvm(從服務器本身或另一臺機器)連接到端口連接了,做一個線程轉儲。
這是來自底層操作系統的錯誤消息。在你的代碼中,你可以做很多事情來處理這個事情,而不是拋出拋出的異常。 Boo到Windows是如此有限。
psexec -s jstack PID >> c:\jstack.log
完美適用於同一臺機器。這是第一次花了一些時間,但我再次執行重定向到文件選項,它在幾秒鐘內完成。
- 1. 沒有足夠的存儲是可用來處理此命令
- 2. Win32Exception沒有足夠的存儲是可用來處理此命令
- 3. 「沒有足夠的存儲是可用來處理此命令」,在與Windows 7
- 4. cmd.exe返回「沒有足夠的存儲可用於處理此命令。」
- 5. MemoryMappedFile CreateViewAccessor拋出「沒有足夠的存儲可用於處理此命令。」
- 6. IIS7「沒有足夠的存儲空間可用於處理此命令」HTTPHandler中的間歇性錯誤
- 7. C# - UrlHistoryWrapper類 - 沒有足夠的存儲空間來處理此命令。 (來自HRESULT的異常:0x80070008)
- 8. 沒有足夠的配額可用於處理此命令-WPF
- 9. 使用WebClient的IronRuby下載文件「沒有足夠的存儲空間可用於處理此命令」
- 10. 「沒有足夠的存儲空間可用於處理此命令」 - 使用Android插件的Gradle
- 11. 爲什麼使用Java MappedByteBuffers獲得「沒有足夠的存儲空間來處理此命令」?
- 12. 不透明度= 1%有時會給出Win32Exception:沒有足夠的存儲空間來處理此命令
- 13. 錯誤「沒有足夠的存儲空間可用於處理此命令」窗口服務器2008
- 14. 沒有足夠的存儲空間可用於處理此命令在RSA加密中
- 15. IIS/SQL Server中的錯誤:沒有足夠的存儲空間來處理此命令
- 16. java.lang.Error:「生成映像時沒有足夠的存儲空間來處理此命令」
- 17. Microsoft Report Viewer 2012例外「沒有足夠的存儲空間來處理此命令」
- 18. 沒有足夠的存儲空間來完成此操作
- 19. 沒有足夠的存儲是可用來處理此命令(VS編譯,運行時)
- 20. 自動化錯誤 - 沒有足夠的存儲是可用來處理此命令
- 21. Android沒有足夠的存儲空間
- 22. 解密連接字符串拋出沒有足夠的存儲空間可用於處理命令
- 23. 沒有足夠的存儲空間可用於完成此操作JclCompression
- 24. 沒有足夠的存儲空間可用於在IE11中完成此操作
- 25. 沒有足夠的存儲空間可用於在命令行運行java實用程序時處理此命令
- 26. 處理,如果沒有足夠的內存可用來啓動此線程c#
- 27. .NET SQL CE核心 - 沒有足夠的存儲空間來完成此操作
- 28. 沒有足夠的存儲空間來完成此操作 - 程序或存儲器?
- 29. MongoDB沒有足夠的存儲空間,32位
- 30. 錯誤,沒有足夠的存儲空間運行m.file
這似乎是一個Windows錯誤消息。 – 2009-05-25 13:19:57
我把它放在一個需要280 MB的Tomcat上。 – ripper234 2009-10-25 11:50:22
也看了這個問題 - http://stackoverflow.com/questions/222108/getting-the-java-thread-id-and-stack-trace-of-run-away-java-thread 它doesn'由於jconsole沒有看到該應用程序,因此不起作用。 – ripper234 2009-10-25 11:52:46