代码编织梦想

 通过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有高速缓存,引起缓存一致性问题),通过缓存一致性协议来解决可见性问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/i2295301/article/details/111029890

@NotNull 的使用-爱代码爱编程

今天使用了@NotNull 注解发现没有效果 @Data @EqualsAndHashCode(callSuper = false) @ApiModel(value="PartRequestOrder对象", description="配件需求申请 ") public class PartRequestOrder implements Serializa

Java-定时任务-爱代码爱编程

前言 基于SpringBoot实现定时任务 Code package com.stefanie.sun.bean.TimeTest; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotati

SpringMVC 参数接收-爱代码爱编程

Java Bean 1.当客户端发起http POST请求的时候,经常以JSON格式发送参数(Request Body中),这时候请求参数过多,可以以对象的方式传递参数,SpringMVC使用对应的java bean接收这样的参数. 重要:@Requestbody---POST请求的时候,接受前端传json对象并绑定javabean。 有的时候直接没

如何在SpringBoot项目中使用AOP-爱代码爱编程

本文主要讲述AOP在Springboot项目中如何使用AOP记录接口访问日志,具体的理论知识这边就不做过多的详解,具体的可以以后在另一篇文章做详细的介绍。 什么是AOP AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。利用AOP可以对业务逻辑的各

JAVA中的选择结构语句-爱代码爱编程

一、if 条件语句         if条件语句分为3种语法格式,每一种格式都有自身的特点,下面进行介绍。         1. if 语句             if语句是指如果满足某种条件,就进行某种处理,语法为:                    if(条件语句) {                           代码块        

技术点复盘,-新鲜出炉的阿里40KJava架构师开发面经!看看你会多少!-爱代码爱编程

学习是一份苦差事,这句话真的不是说说而已,真的是你认真学习过,才会懂得,学习是多么的辛苦,这点我深有体会,但是我还是想说,没办法,想要更好的生活,你就要不断地努力学习。 所幸的是,程序员这个行业,学习和回报率是要高于其他行业的,不断提升自己的技术水平和认知,是绝对没有坏处的。                

llvm 编译器高级用法:第三方库插桩-爱代码爱编程

本文字数:3141字 预计阅读时间:25分钟 一、背景 最近看到一篇有意思的技术文章:《抖音研发实践:基于二进制文件重排的解决方案 APP启动速度提升超15%》。 原文结尾提到该方案无法覆盖100%的符号: 基于静态扫描+运行时trace的方案仍然存在少量瓶颈: initialize hook不到 部分block hook不到

反编译获取任何微信小程序源码——看这篇就够了(最新)-爱代码爱编程

一 准备工具 1 node.js 运行环境 下载地址:https://nodejs.org/en/ 2 反编译的脚本 链接:https://pan.baidu.com/s/1InxRoozDDb-C-g2rKGi1Cw 提取码:i50k 3 夜神模拟器 下载地址:https://www.yeshen.com/cn/download/fullPa

ecplise集成反编译插件-爱代码爱编程

32位ecplise: 链接:https://pan.baidu.com/s/1HfgqdPmmEMvZ-u9IxPrcVA  提取码:6vqh  1、去我的百度网盘下载jar包 2、把这两jar包放置在eclipse\plugins下,重启eclipse 3、按照下图设置.class文件编辑器 64位ecplise: 链接:https://

关于MMU实验的疑问 求大神!--TQ2440-爱代码爱编程

【已解决】关于MMU实验的疑问 求大神! 本帖最后由 funkunho 于 2016-3-8 19:17 编辑 原文:http://bbs.100ask.net/question/1319 是4B的一级描述符,图上写错了,抱歉 这个是韦老师MMU实验的C语言源码,可以正常使用,但是问题来了,4B的描述符地址的[1:0]位应该是00啊,也就是4字节

上世纪多个奇葩发明与设计-爱代码爱编程

关注+星标公众号,不错过精彩内容 来源 | 机械微学 发明设计是对未知的探索 没有成熟的事物可以借鉴 没有实际应用作为参考 也是因为如此 出现了很多让人捧腹的奇葩发明 先来看看一战时人们的脑洞有多大。 防护服 不好看也不实用的防护服。 头盔 这头盔看起来就像是受到委屈一样,一脸哭丧样。 视听设备 德国的视听设备,增强敌军

Java程序员不可错过的11个IDEA插件-爱代码爱编程

作者:葛俊 www.jianshu.com/p/686ba0ae4ac2 善用Intellij插件可大幅提升我们的效率 以下是我用过不错的Intellij插件 1. .ignore 地址:https://plugins.jetbrains.com/plugin/7495--ignore 生成各种ignore文件,一键创建git ign