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