我正在尝试在我的 java 应用程序上运行 jstack 命令。应用程序比较大,运行在 jboss AS 内,占用大约 4gb 的内存。操作系统为 Windows Server 2003 标准版。每次我得到一个错误“没有足够的存储空间来处理这个命令”。有足够的内存、16gb 和磁盘空间。那么,有什么想法吗?
最佳答案
我最近在 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。
关于java - Jstack 和没有足够的存储空间来处理这个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/906620/