如何在远程Java Web应用程序上进行内存分析

Nic*_*ong 3 java memory profiling

我知道我们可以使用像JProfiler等工具.是否有任何关于如何配置它以通过远程监控显示内存使用情况的教程?

任何的想法?

Mat*_*uGD 8

你有VisualGC,它不是很先进,但你可以看到你的应用程序的内存使用情况(垃圾,旧,烫发......等)

http://java.sun.com/performance/jvmstat/visualgc.html

恢复:您在远程计算机上启动守护程序监视(http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jstatd.html,请参阅安全性副本)

JAVA_HOME/bin/jstatd -J-Djava.security.policy=jstatd.all.policy
Run Code Online (Sandbox Code Playgroud)

这里有一个名为jstatd.all.policy的文件,其中包含:

    grant codebase "file:${java.home}/../lib/tools.jar" {   
permission java.security.AllPermission;
};
Run Code Online (Sandbox Code Playgroud)

在远程计算机上,您可以使用jps工具调试应用程序的pid:

http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jps.html#jps

终于在你的本地机器上你启动了visualgc:

visualgc the_pid@remote_machine_address
Run Code Online (Sandbox Code Playgroud)


joe*_*jag 7

我通常使用YourKit这是一个很好的应用程序(需要许可证).

在您的webservers启动/关闭脚本(catalina.sh for tomcat)中输入:

JAVA_OPTS="-Djava.awt.headless=true -agentlib:yjpagent -Xrunyjpagent:sessionname=Tomcat"
Run Code Online (Sandbox Code Playgroud)

你需要已经下载并添加到你的库路径的YourKit(我也在catalina.sh中这样做):

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/yourkit/yjp-6.0.16/bin/linux-x86-32
Run Code Online (Sandbox Code Playgroud)

然后,您可以在本地桌面上启动YourKit客户端并进行远程连接.