相关疑难解决方法(0)

212
推荐指数
5
解决办法
27万
查看次数

在java检测中使用agentmain方法有什么用处

我用-javaagent参数和premain方法做了一些java字节码检测.但这是我第一次听到agentmain方法.我对这个方法有一些疑问.接下来是这样的.

premain和agentmain方法有相同的用途吗?
调用agentmain方法时?
在java检测中使用agentmain方法有什么用?

instrumentation profiling bytecode javaagents

7
推荐指数
1
解决办法
4233
查看次数

JVM - 在正在运行(非检测)的会话中获取类的实例

我需要通过在给定类的实例上调用特定方法来停止进程.这个过程已经运行了一天,如果我把它关闭,我会失去很多工作.由于API中的错误,GUI错误连线并且没有调用正确的停止功能.我附加了一个交互式Java(Scala)解释器,所以如果我能掌握进程的实例,我可以轻松地调用正确的方法.

我不在调试会话中,没有com.sun.jdi.我可以在堆栈跟踪转储中看到该实例,但StackTraceElement不包含实际实例,只包含类和行号.

在没有特定检测的情况下,在运行会话中是否有任何方法可以通过其类,通过线程转储来获取该实例?

java reflection jvm reference

6
推荐指数
1
解决办法
429
查看次数

如何在生产中生成cpu快照?

使用VisualVM,我可以附加到本地java进程,启动/停止CPU分析,并生成快照.我甚至不需要用任何特殊的代理商来处理这个过程.

是否有可能在无头生产服务器上做同样的事情?我知道我可以配置远程连接调试器的过程,但我希望尽量减少更改客户环境的数量和影响.我只想运行一个命令来分析一段时间并生成一个快照文件,我可以scp到我的工作站进行VisualVM或同等的分析.

优选的是,任何程序我运行要做到这一点应该是自由软件,这样我就可以用我的Java应用程序捆绑它,并将它在客户环境中使用.

理想情况下,就像使用VisualVM一样,我希望能够在不重启的情况下连接到正在运行的系统.

到目前为止,我发现的最接近的是使用hprof:

  java -agentlib:hprof=cpu=samples,interval=20,depth=3 classname
Run Code Online (Sandbox Code Playgroud)

但这需要重新启动以开始分析而另一个需要停止,因为我没有看到在运行时打开和关闭采样的方法.

有没有更好的办法?如果没有开箱即用的解决方案,那么如何构建它?它必须是可能的,因为VisualVM做到了.

java profiling

5
推荐指数
1
解决办法
2126
查看次数