【问题标题】:java jstack tool insufficient memory or insufficient privilege to attachjava jstack工具内存不足或附加权限不足
【发布时间】:2013-11-22 16:23:05
【问题描述】:

我真的很困惑: 在我的 windows 2008r2 中,我有一个 windows 服务,实际上它是以 SYSTEM 用户身份运行的 java 进程。现在,我将 Jstack 直接用于服务。但它发生错误:

 insufficient memory or insufficient privilege to attach

但如果我使用 Jstack 的选项 -F ,它可以正常工作。我查看了jdk的源码,上面使用了一个类BugSpotAgent来完成。

我想知道我不能原始使用Jstack的根本原因,是SYSTEM用户权限问题吗?我也尝试使用 PsExec.exe(一个工具)来运行我的 Jstack 原始(这意味着我将使用 SYSTEM 用户来运行 Jstack),但还是不行。

你能帮帮我吗?

感谢和问候!

【问题讨论】:

标签: java memory jstack privilege


【解决方案1】:

jstack 只能锁定 Same UserSame Session 中启动的进程。如果未指定会话,psexec 命令会锁定到控制台会话并在尝试获取线程转储时抛出此错误。

解决方案是确保与 psexec 一起使用的用户和会话与用于目标 java 进程的用户和会话相同。

如果它是由普通用户启动的, 一种。在没有 -s 或 -h 标志的情况下使用相同的用户凭据登录 湾。查找启动进程的会话 ID。 (您可以使用任务管理器并转到选项卡用户找到它)。将此会话 ID 与标志 -i 一起使用

psexec \\server-name -u username -p password -i session-id command

例如

psexec \\192.168.1.1 -u john -p pass123 -i 1 jstack.exe 4242

注意:如果 java 进程已由 SYSTEM 用户启动,请使用标志 -s

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-31
    • 2021-08-24
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 2019-10-24
    • 2019-02-26
    • 2018-09-12
    相关资源
    最近更新 更多