之前提到使用命令行的方式执行btrace监控,其实jdk提供更好的方式监控应用程序. 我们可以使用jvisualvm.exe加插件的方式监控,这样更加方便. 1.在jvisualvm.exe安装btrace插件 在这里选择Btrace 插件,由于我已经安装 ,这就就不能在选择了. 2.使用插件 在需要监控的应用邮件点击. 这样就打开了btrace插件. 在上面的框中编辑监控代码,在classpath 中加入 btrace相关的jar包,点击start就可以开始监控了. 点开始时插件会检查代码是否…
一.背景        在生产环境中可能经常遇到各种问题,定位问题需要获取程序运行时的数据信息,如方法参数.返回值.全局变量.堆栈信息等.为了获取这些数据信息,我们可以 通过改写代码,增加日志信息的打印,再发布到生产环境.通过这种方式,一方面将增大定位问题的成本和周期,对于紧急问题无法做到及时响应:另一方面重新部 署后环境可能已被破坏,很难重新问题的场景. 二.BTrace功能        BTrace天生就为解决这类问题而来,它可以动态地跟踪java运行程序.通过hotswap技术,动态将跟…
使用Java自带的jvisualvm调试Java程序,可以查看CPU.内存.类及线程等信息,还可以进行Dump,无疑是一个利器 由于客户端是Windows.服务端是Linux,并且是最小安装的Linux,没有图形界面,因此需要进行远程调试 一.客户端:Windows 打开%JAVA_HOME%/bin/jvisualvm.exe,在“远程”节点,右键,“添加远程主机”,如下所示: 输入主机IP地址,修改显示名,点击确定,如下所示: 二.服务端:Linux 在$JAVA_HOME/bin/下新建策…
JVM调优(三)--基于Btrace的监控调试 简介 Btrace可以动态地向目标应用程序的字节码注入追踪代码 用到的技术: JavaComplierApi.JVMTI.Agent.Instrumentation+ASM Btrace安装入门 通过github搜索进行下载 新建环境变量BTRACE_HOME 添加Path:%BTRACE_HOME%\bin 两种运行脚本的方式 在JVisualVM中添加Btrace插件,添加classpath 使用命令行btracce <pid> Btrace…
在之前的文章中写了如何使用btrace来监控运行中的jvm的方法的参数和返回值 jvisualvm中提供了一个btrace插件,我们可以更方便地attach到一个运行中的jvm 更方便地执行和停止btrace,发送事件,变更环境变量等 jvisualvm中btrace插件的安装: 打开jvisualvm,点击 工具 --> 插件 ,在可用插件中选择 btrace workbench,点击安装即可 jvisualvm中btrace插件的使用: 选中一个我们要进行监控的jvm实例,右键点击,然后选择…
使用Java自带的jvisualvm调试Java程序,可以查看CPU.内存.线程等信息,还可以进行Dump,无疑是一个利器 由于客户端是Windows.服务端是Linux,并且是最小安装的Linux,没有图形界面,因此需要进行远程调试 一.客户端:Windows 打开%JAVA_HOME%/bin/jvisualvm.exe,在"远程"节点,右键,"新建远程主机",如下所示: 输入主机IP地址,修改显示名,点击确定,如下所示: 二.服务端:Linux 在$JAVA_…
在查看内存溢出的时候,我们需要明白,堆溢出和持久代溢出,他们不一样,说到内存泄漏,我们就需要明白,内存中  年老代和新生代,和持久代,这3块的数据 自己的理解: new了一个对象,会进入到堆里面,先放到年轻代中 也就是new generation ,他放到eden中,如果eden满了,就会进行一次yong gc ,如果还有存活对象(被用到的对象)就会被移到S0区或者S1中转移,如果s0和S1都已经满了,那么这些对象(引用)就会把放到年老代中去,也就是old  generation 区, 如果ol…
jdk自带了查看和分析jvm的一系列工具,在%JAVA_HOME%/bin目录下,包括jvisualvm.jconsole.jmap.jstack.jstat等: 其中jvisualvm.exe提供一个可视化界面,可双击直接运行: 第一次运行时,添加远程主机和JMX连接,看右边的tab页中没有Visual GC,百度了下它是jvisualvm的一个插件,需要单独安装: 菜单栏-工具-插件,点击设置,默认的配置https://visualvm.java.net/uc/8u40/updates.xm…
如何在Exe和BPL插件中实现公共变量共享及窗口溶入技术Demo源码 1.Delphi编译方式介绍: 当我们在开发一个常规应用程序时,Delphi可以让我们用两种方式使用VCL,一种是把VCL中的申明单元及实现单元全部以静态编译的方式编译并链接进Exe可执行文件中,这样做的好处就是发布程序时只需要发布独立的可执行文件,当我们使用了的第三方DLL.OCX等时,无需发布*.bpl等文件,但EXE程序文件的体积会较大. 另外一种是把VCL库以运行时状态(即把VCL库中的申请单元静态编译进EXE可执行文…
 一.作用 可以用于对运行中java程序进行诊断监控分析,也可以用于开发阶段查看一些异常信息或者调用过程(如有些第三方代码没有源代码,不便于debug调试). 注:如果用于对在线运行系统的诊断,需要十分谨慎. 1.脚本编写是否准确无法 2.监测范围是否可控,不能监控过大的范围,给系统带来大的冲击 3.使用btrace工具,会占用一部分内存,如果当前程序内存空间已经不够用了,则不能使用,若强行使用,可能会导致java内存不足而从引起java虚拟机退出 4.通过实际测试,监控不能保证每次都正确监…