【工具篇】 常用工具介绍
该思维导图由 AI 生成,仅供参考
javap:查阅 Java 字节码
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了JVM常用工具javap的使用方法和输出结果,以及OpenJDK项目Code Tools中的ASMTools和JOL工具,以及ASM字节码框架。ASMTools提供了反汇编和汇编操作,可用于简单的字节码修改,而JOL工具则可查阅Java虚拟机中对象的内存分布。ASM字节码框架被广泛应用于许多项目中,包括生成新的class文件和修改已有的class文件。文章通过丰富的代码示例和详细的解释,帮助读者快速了解了这些工具的功能和使用方法。对于想要深入了解JVM工具的读者来说,这篇文章是一份有价值的参考资料。
《深入拆解 Java 虚拟机》,新⼈⾸单¥59
全部留言(30)
- 最新
- 精选
- hey,吕布老师,文中代码格式异常了,早上打开还好的
作者回复: 这么诡异,我反馈一下
2018-08-032 - xianhai能不能介绍一下metaspace的tracing 工具?怎样看metaspace里的内存分布?
作者回复: 在第三部分我会介绍一些常用的分析工具。看Metaspace的话可以试试通过jmap -clstats 来查看各个类的情况。我个人用的比较多的是flight recorder,不过我记得只能查看总的Metaspace使用量。
2018-08-032 - sgl为什么方法里用的指令只有入栈,没有出栈?难道putfield这类指令,用了操作数栈上的数据以后,会自己调用出栈指令?
作者回复: putfield 可以想成 出栈再消耗数据
2018-10-201 - 倔强为什么我允许F oo Dump报无法加载主类?是因为没有main方法?
作者回复: 多谢指出!应该是Wrapper,而且cp也需要添加当前目录,即-cp /path/to/ASM.jar:. Wrapper
2018-08-031 - 志远1.如何汇编至class文件啊?用什么工具? 2.字节码的局部变量和java程序中的局部变量有什么区别?
作者回复: 1. 你可以通过ASMTools反汇编class文件,再将输出的文本汇编回class文件 2. 字节码中的局部变量会更多一些,Java编译器会根据需要存储一些非Java程序中的局部变量
2018-08-031 - xianhaireflection inflation 会不会造成java 8 metaspace: Outofmemory
作者回复: Reflection inflation会生成新的类,理论上是会导致你说的这个错误的。
2018-08-031 - Ivan可以在运行时通过class的实例,获取到这个类的源代码或者汇编代码么?或者说怎么查看动态代理生成的类的源代码?
作者回复: 一个是在加载时用javaagent或者JVMTI截获,另外一个是用一些调试器。关于后者,你可以试试JDK中的HotSpot Debugger(HSDB),在lib/sa-jdi.jar里。
2018-08-031 - 刹那间的永恒果然还是一点都看不懂,老师,什么阶段适合接触虚拟机?2018-08-04659
- xiaobang能系统的介绍下Java字节码吗,每次看到都是靠猜2018-08-2029
- Thomas老师后面讲下反射跟动态代理~很期待专门写一篇JAVA特性的原理。2018-08-038