我想在我的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