查看Java的汇编指令
通过javap 命令,可以将字节码文件反编译。如通过下面的命令:
javap -c Xxxx.class
而有时候想看某些JDK底层实现,发现反编译得到的代码并没有什么帮助,因此本文介绍如何查看Java的汇编指令,查看Java代码最真实的运行细节。
Java本身提供这个支持,但需要引入而外的包(hsdis-amd64.dylib
)。
Mac下:
https://github.com/evolvedmicrobe/benchmarks/blob/master/hsdis-amd64.dylib
下载下来后,将其放置到jre lib目录下即可。
查看Java的汇编指令
1、可以使用命令
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly Main
(Main是class文件)
2、在IDEA配置VM options,打印汇编指令,如下图。
-XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly
这种方式,在运行程序时,直接在控制台打印汇编指令。
如果遇到:
Java HotSpot(TM) 64-Bit Server VM warning: PrintAssembly is enabled; turning on DebugNonSafepoints to gain additional output Could not load hsdis-amd64.dylib; library not loadable; PrintAssembly is disabled
下载上面的库文件放到jre/lib下即可。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Leetcode打卡 | No.24 两两交换链表中的节点
No.24 两两交换链表中的节 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 说明: ●你的算法只能使用常数的额外空间。 ● 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 分析:这一题通过画图才能够比较直观的看出来思路,我们之前有提过链表的删除节点、交换节点位置等操作比列表简单方便,这里就是属于这交换类的啦。 首先初始状态是这样的,(图片来源于网络,手绘的太丑就不放出来了) 通过改变节点指针的指向确定新的连接方式 。 得到的结果如下: 之后依次后移循环上述操作,直到循环终止。 上述实现代码如下: 原文发布时间为:2018-08-29本文作者:我爱小詹本文来自云栖社区合作伙伴“ 小詹学Python”,了解相关信息可以关注“ 小詹学Python”。
- 下一篇
使用WeakHashMap创建具有过期时间的本地缓存
java中为了让程序员能参与到垃圾回收机制中(不是说java的GC是全自动的吗?这要看从哪个方面讲了,其实如果开发人员能熟练掌握java的gc原理,对提升系统的稳定性有极大帮助),设计了4种引用级别:分别是强引用(new 出来的)、软引用、弱引用和虚引用。 本文不打算介绍这几种引用的用法。还不了解它们的读者可以自行百度(国内的几个搜索引擎,还是百度 最适合程序员)。不过如果能使用谷歌的还是要使用谷歌,因为各个级别都有大坑,使用不当可能完全发挥不了期望的效果。但是国内很少有文章讲其中的注意事项,可能是使用的场景太少了。而国外(比如dzone)的博客就不少。 弱引用的对象在每次垃圾回收的时候都会被处理掉。WeakHashMap就是利用了这个特性来实现的本地缓存。 WeakHashMap的具体用法也请百度。这里假设你已经在用WeakHashMap了 WeakHashMap实现的缓存虽然好用,但是不具备定时过期的特性。如果没有等到垃圾回收(或者我不去看监控根本不知道是否进行过垃圾回收),但是想更新缓存之值,就无能为力了! 所以这里我们个WeakHashMap增加一个过期时间。 有两种方式实现:...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Hadoop3单机部署,实现最简伪集群
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用