java jstack工具内存不足或附加权限不足
我真的很困惑: 在我的Windows2008R2中,我有一个windows服务,实际上它是一个java进程,以系统用户的身份运行。现在,我使用Jstackrawly来创建服务。但它会出现错误:java jstack工具内存不足或附加权限不足,java,memory,jstack,privilege,Java,Memory,Jstack,Privilege,我真的很困惑: 在我的Windows2008R2中,我有一个windows服务,实际上它是一个java进程,以系统用户的身份运行。现在,我使用Jstackrawly来创建服务。但它会出现错误: insufficient memory or insufficient privilege to attach 但是如果我使用Jstack的选项-F,它可以很好地工作。我查看jdk的源代码,它使用一个类BugSpotAgent来完成上面的工作 我想知道我不能使用Jstackrawly的根本原因,是系统
insufficient memory or insufficient privilege to attach
但是如果我使用Jstack的选项-F,它可以很好地工作。我查看jdk的源代码,它使用一个类BugSpotAgent来完成上面的工作
我想知道我不能使用Jstackrawly的根本原因,是系统用户权限问题吗?我还尝试使用PsExec.exe(一个工具)来运行我的Jstackrawly(这意味着我将使用SYSTEMuser来运行Jstack),但它仍然无法工作
你能帮我吗
谢谢和问候 jstack只能锁定由同一用户在同一会话中启动的进程。未指定会话时,psexec命令将锁定到控制台会话,并在尝试获取线程转储时抛出此错误
解决方案是确保psexec使用的用户和会话与目标java进程使用的用户和会话相同
如果它是由普通用户启动的,
A.使用相同的用户凭据登录而不使用-s或-h标志
B查找启动进程的会话ID。(您可以使用任务管理器并转到“用户”选项卡找到它)。将此会话id与标志-i一起使用
psexec\\server name-u username-p password-i session id命令
e、 g
psexec\\192.168.1.1-u john-p pass123-i 1 jstack.exe 4242
注意:如果java进程已由系统用户启动,请使用标志-s另请参阅windows服务的解决方法。