jvm
Hpsyche
默默学习的菜鸡大四学生
展开
-
volatile简介及可见性、有序性的保证
volatile简介 volatile是jvm提供的最轻量级的同步机制(相比于synchronized,其要轻量很多) 当一个变量定义为volatile后,其具备两种特性: 此变量对所有线程的可见性 可见性:当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。 禁止指令重排序优化 指令重排序:JVM为了进行优化,会对变量赋值等操作进行一系列的优化,其只保证了所有依赖赋值结...原创 2019-12-24 22:42:50 · 1249 阅读 · 1 评论 -
linux中查看java汇编代码(hsdis+jitwatch)
前言 在研究JVM时,想要研究下volatile关键字的底层实现,需要其对其汇编代码的指令进行观察,故需要查看即时编译器产生的汇编代码。 正文 环境:linux(deepin) hsdis的配置 进入https://sourceforge.net/projects/fcml/files/fcml-1.1.3/,下载源码并解压(这里可能需要科学上网) cd fcml-1.1.3 ./configu...原创 2019-12-24 19:57:17 · 783 阅读 · 1 评论 -
idea查看java字节码工具(jclasslib Bytecode viewer)
前言 在进行java代码,调试时,有些复杂的情况(如语法糖等)会让我们难以理解JVM的具体执行细节,此时我们可以通过javap反编译来查看JVM字节码,而在ide中,通过jclasslib Bytecode viewer工具,可以更为细节地观察某类的字节码及字节码代表的字段表集合等信息。 正文 首先,在intelij idea中引入工具,具体操作如下: 重启ide后,点击某个类,在工具栏vie...原创 2019-12-14 00:28:21 · 3225 阅读 · 0 评论 -
JVM内存模型和JAVA内存模型的区别
前言 很多人都以为JAVA内存模型就是JVM内存模式,其实二者是不同的概念,本文针对此,主要讲解JVM内存模型和JAVA内存模型的区别。 正文 其实本身二者就是不同的概念,在此我分开来讲。 JVM内存模型 JVM内存模式主要分为:程序计数器、JAVA虚拟机栈、本地方法栈、堆和方法区,其中JDK1.8之前方法区的实现为永生代,而JDK1.8之后方法区的实现转为元空间。 各个内存区域的作用在很多博客和...原创 2019-10-11 23:17:33 · 2043 阅读 · 0 评论