Jvisualvm工具使用教程。一、插件安装:jvisualvm是随jdk一同发布的jvm诊断工具,通过插件可以扩展很多功能,插件扩展也是jvisualvm的精华所在。
jvisualvm是随jdk一同发布的jvm诊断工具,通过插件可以扩展很多功能,插件扩展也是jvisualvm的精华所在。
打开该工具,通过菜单“工具”—>“插件”开发以下对话框:
在可用插件tab中选择需要安装的插件,本博文中需要用到两个插件如上图中的方框所示。
本部分的时间测量用到插件Visual GC。
IDEA在启动时,由于加载很多的类,占用了较长的时间,其实在加载这些类时,还有很重要的一步就是验证这些加载的类。平时我们都是在组内开发工程,可以认为这些加载的编译代码是可靠的,不需要在加载的视乎再进行字节码验证。我们可以通过参数
-Xverify:none禁止字节码验证,加快IDEA的启动过程。
这个参数要加载IDEA的配置文件中,一般情况下,配置文件在个人目录下:
修改后的配置文件如下:
-Xms512m -Xmx1500m -XX:ReservedCodeCacheSize=240m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -XX:MaxJavaStackTraceDepth=-1 -agentlib:yjpagent64=probe_disable=*,disablealloc,disabletracing,onlylocal,disableexceptiontelemetry,delay=10000,sessionname=IntelliJIdea2017.2 -Xverify:none
通过添加参数
-Xverify:none配置后,类加载速度提高30s以上。可以通过
visual vm插件面板查看:
根据
visual vm中面板的显示内容,我们还可以调整jvm堆的设置,尽情探索吧~
三、BTrace
获取返回值,参数等信息
1.测试代码
public class JdkTest { public int sum(int a, int b) { return a + b; } public static void main(String[] args) { JdkTest t = new JdkTest(); System.out.println(t.sum(10, 20)); } }
2.BTrace代码
@BTrace public class TracingScript { /* put your code here */ @OnMethod( clazz="com.test.JdkTest", method="sum", location=@Location(Kind.RETURN)) public static void func(@Self com.test.JdkTest instance,int a, int b, @Return int result){ println("调用堆栈:"); jstack(); println(strcat("方法参数A:",str(a))); println(strcat("方法参数B:",str(b))); println(strcat("方法结果:",str(result))); } }