如何在混合模式下使用jstack

时间:2011-07-21 02:51:18

标签: java linux jstack

我尝试在混合模式下使用jstack来查看本机调用堆栈,但我发现jstack总是向我显示此错误消息。

sili@linux32:~$ jps
2834 Jps
2825 Server

sili@linux32:~$ jstack -m 2825
Attaching to process ID 2825, please wait...
Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process

没有-m参数,一切正常。我的os是ubuntu 11.04,java -version的输出是

sili@linux32:~$ java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Client VM (build 20.1-b02, mixed mode, sharing)

另外,我的测试程序非常简单,如下所示。我尝试使用Oracle发布的java或者我自己构建的gamma到lanuch Server,但是它们都无法使用jstack混合模式。

import java.io.InputStream;  
import java.io.OutputStream;  
import java.net.ServerSocket;  
import java.net.Socket;  

class Server {  

    public static void main(String[] args) throws Exception {  

        ServerSocket server = new ServerSocket(10000);  

        Socket accept = server.accept();  

    InputStream in = accept.getInputStream();  

    byte[] buf = new byte[1024];  

    int num = in.read(buf);  

    String str = new String(buf,0,num);  

        System.out.println(str);  

        accept.close();  
        server.close();       
    }
}

根据Oracle的jstack页面,混合模式只能用于删除调试器。

0 个答案:

没有答案