通过javap 命令,可以将字节码文件反编译。如通过下面的命令:

javac XXX.java

javap -c XXX.class

而有时候想看某些JDK底层实现,只是得到一些反编译的代码,那么我想要查看Java的汇编指令,查看Java代码最真实的运行细节,要该怎么做呢?

Java本身提供这个支持,但需要引入而外的包

链接: https://pan.baidu.com/s/1-evEb79T_d0r9lZBU5exeA  密码: vucm

Mac下载:(hsdis-amd64.dylib)

下载后,将其放到bin目录下

windows系统(hsdis-amd64.dll):  解压hsdis-1.1.1-win32-amd64.zip

解压后存放到jre目录的server路径下

输出汇编指令:

1、在IDEA配置启动class的VM options加入打印汇编指令:

-XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly

比如在代码里使用volatile关键字:

    private static volatile User user;static {if(user==null){user = new User();}}

volatile变量修饰的共享变量,在进行写操作的时候会多出一个lock前缀的汇编指令,

会触发总线锁或者缓存锁(cpu有高速缓存,引起缓存一致性问题),通过缓存一致性协议来解决可见性问题

如何查看java的汇编指令相关推荐

  1. 查看Java的汇编指令

    通过javap 命令,可以将字节码文件反编译.如通过下面的命令: javap -c Xxxx.class 而有时候想看某些JDK底层实现,发现反编译得到的代码并没有什么帮助,因此本文介绍如何查看Jav ...

  2. idea查看java代码汇编指令

    把下面文件放到JRE_HOME/bin/server hsdis-amd64.dll hsdis-amd64.lib 指定java的jvm参数 -server -Xcomp -XX:+UnlockDi ...

  3. 通过查看Windbg中汇编指令及内存中的值去定位软件崩溃问题

    目录 1.在Windbg中分析dump文件的一般步骤 1.1.查看异常的类型

  4. 关于win10系统如何调用debug查看CPU汇编指令和内存

    下载安装DOSBox.网上提供下载地址:DOSBOX Debug是DOS(Disk Operating System,磁盘操作系统).windows提供的实模式(8086方式)程序的调试工具.使用它, ...

  5. java汇编指令查看工具jitwatch

    当前环境:jdk1.8,win10,64位 打印Java汇编指令 使用hsdis工具打印汇编指令,可以自行编译或者下载已编译好的dll或so文件,并将文件拷贝至jdk安装目录下的bin/server或 ...

  6. 【JVM】通过javap命令分析Java汇编指令

    文章目录 javap命令简述 javap测试及内容详解 例子1 例子2 总结 转载说明 javap命令简述 javap是jdk自带的反解析工具.它的作用就是根据class字节码文件,反解析出当前类对应 ...

  7. java 汇编_大话+图说:Java 汇编指令——只为让你懂

    原标题:大话+图说:Java 汇编指令--只为让你懂 前言 随着Android开发技术不断被推到新的高度,对于Android程序员来讲越来越需要具备一些对深入的基础性的技术的理解,比如说Java汇编指 ...

  8. 通过javap命令分析java汇编指令

    一.javap命令简述 javap是jdk自带的反解析工具.它的作用就是根据class字节码文件,反解析出当前类对应的code区(汇编指令).本地变量表.异常表和代码行偏移量映射表.常量池等等信息. ...

  9. 实验1 查看CPU和内存、用机器指令和汇编指令编程

     实验任务 一.使用Debug,用E命令和A命令以两种方式将指令写入内存 机器码        汇编指令 b8 20 4e     mov ax,4E20H 05 16 14     add ax,1 ...

最新文章

  1. 小巧的日志记录组件 - 开源研究系列文章
  2. javascript-模板方法模式-提示框归一化插件
  3. AAAI2019 | 腾讯AI Lab详解自然语言处理领域三大研究方向及入选论文
  4. @param注解的用法解析_SpringBoot 配置类解析
  5. 为什么程序员更喜欢用google搜索? 因为正经!
  6. linux 下的csp 模块,linux kernel 中MIGRATE_TYPES的理解
  7. linux 僵尸进程 fwrite,Linux之僵尸进程
  8. 假设有python程序文件_《Python程序设计》题库
  9. HDU 3861 The King’s Problem 强连通分量 最小路径覆盖
  10. 为ASP.NET MVC Client-side Resource Combine 添加中文支持
  11. Linq实战 之 Linq to Sql及Entity Framework操作详解
  12. 00003__位图简介
  13. 毕业设计总结篇之终结篇——基于android的创意展示平台(混合app)
  14. 操作系统 - startx/xinit
  15. before和after怎么区分_before和after区别
  16. 市审计局充分利用大数据助力扶贫和“十个全覆盖”审计工作
  17. 的确,Java存在缺陷。但是……
  18. [附源码]Python计算机毕业设计大众点评管理系统
  19. vue检测是不是360浏览器兼容模式_vue开发之不同浏览器的类型判断
  20. 356 次小生成树(求解最近公共祖先优化)

热门文章

  1. javascript使用workbox离线缓存网页
  2. Xshell6 中,电脑数字小键盘输入不了数字(按数字键输入字母)
  3. linux防火墙放开pptpd端口号,Linux下 iptables防火墙 放开相关端口 拒绝相关端口 及查看已放开端口...
  4. python pptp拨号_pptp拨号上网
  5. 0基础学python第一天:认识python,安装python,输出第一个程序
  6. python智慧树董付国_智慧树_师魂_大学课后答案
  7. 指针与二级指针的理解与应用
  8. 使用jedis连接redis-cluster模拟缓存击穿,穿透,雪崩场景
  9. #214-[模拟]QQ堂
  10. 大端与小端以及如何判断大小端