如何查看JVM内存中的对象和执行中的方法
内网生产无法远程debugger的怎么办?
使用jmap和jstack将堆内存(对象)和栈(方法)输出为文件然后下载下来进行查看。
pid:是jvm进程号,可以使用jps -ml或ps命令查看到
jvm内存对象统计:jmap -histo:live pid
jvm内存对象查看:
先将内存导出为文件: jmap -dump:format=b,file=dump.hprof pid
然后使用mat工具打开查看
里面有多个统计面板,类的占比,对象的引用关系,你可以看到占内存较多的类以及这些类被谁持有,结合方法栈和代码来继续分析。
jvm中线程执行中的方法(栈): jstack -l pid
可以看到方法调用,方法的行号,就知道线程在执行什么方法。这个只能看到java的堆栈,一些本地堆栈看不到可以使用linux的pstack pid命令来继续深入查看。
你还想看到方法的耗时和返回值?
那你要用arthas工具的trace和watch命令;
trace 方法内部调用路径,并输出方法路径上的每个节点上耗时
解压arthas-bin.zip后执行java -jar arthas-boot.jar或者as.sh进入arthas命令行界面
然后输入要查看的类和方法名,格式为 :
trace 类名 方法名
https://arthas.aliyun.com/doc/trace.html
https://blog.csdn.net/shy_snow/article/details/108338604
垃圾回收器与JVM性能监控工具介绍以及java多线程安全性介绍ppt
敲键盘的小夜猫: 我对您如何将复杂概念简化,并用易于理解的方式传达出来印象深刻。这种内容不仅能够帮助初学者快速掌握要领,也为有经验的开发者提供了新的见解和思路。感谢您的辛勤工作和慷慨分享,期待您未来的作品!继续加油! 【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】
傅铭记: 也是方法一,手机显示热点连起了,可是VNC用不了,只设置了第一个IPV4,怎么办
傅铭记: 我也连不上了,急
鹅搬凳_: 哥,我想问一下重启了zookeeper还需要重启kafka吗
Qin_J:): 大佬,请教一个flink mysql cdc的问题,flink任务启动一段时间之后,就会报一个错:table outbound.extract transaction 28240219 whose schema isn't known to this connector. One possible cause is an incomplete database history topic, Take a new snapshot in this case.导致同步不到数据,这个是什么原因呢?