我已经用Java构建了一个命令行工具,现在我想用YourKit来分析它。我启动命令行工具的方式如下:
$ java -classpath .:foo.bar.jar com.foobar.tools.TheTool arg1 arg2 arg3它在不到2秒的时间内完成。
在阅读了http://www.yourkit.com/docs/80/help/agent.jsp之后,我尝试了以下几点:
$ java -agentpath:/home/dspitzer/yjp-8.0.24/bin/linux-x86-32/libyjpagent.so -classpath .:foo.bar.jar com.foobar.tools.TheTool arg1 arg2 arg3我明白:...and:
[YourKit Java Profiler 8.0.24] JVMTI version 3001016d; 14.3-b01; Sun Microsystems Inc.; mixed mode, sharing; Linux; 32-bit JVM
[YourKit Java Profiler 8.0.24] Profiler agent is listening on port 10001...
[YourKit Java Profiler 8.0.24] *** HINT ***: To get profiling results, connect to the application from the profiler UI
...(然后工具运行到完成并退出。)
我猜想(至少在默认情况下) YourKit被设计为只连接到正在运行的应用程序。
如何修改命令行工具以允许来自YourKit的连接?
发布于 2010-04-02 10:17:01
在分析器“连接”之前,无法暂停配置文件的应用程序;您只是不需要这样做。
相反,请执行以下操作:
发布于 2010-04-01 21:32:12
我不知道有一个YourKit选项可以这样做(这并不是说没有),但是有一个Java调试选项可以这样做。
除了YourKit代理选项之外,还可以尝试在命令行中添加以下内容:
-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y这将导致VM在启动时立即挂起,等待调试器在端口8000上连接。YourKit本身并不是一个调试器,但是像Eclipse或Netbean这样的IDE将完成这项工作,基本的jdb命令行也会这样做。
因此,在设置了两个选项的情况下,运行该命令,连接YourKit,然后使用调试器连接到调试端口,这将触发VM继续执行,允许YourKit获取所需的数据。
最好使用YourKit来完成这一切,但我不知道有这样的方法。
发布于 2010-04-01 21:40:23
您可以通过Eclipse启动它,它有一个YourKit插件,可以在应用程序启动时启动。
https://stackoverflow.com/questions/2563777
复制相似问题