java虚拟机
蓝猫_虹
道为体,术为用。有道者术能长久,无道者术必落空。学术先需明道,方能大成。学术若不明道,终是小器。故道为纲,术为目,纲举目张。道为世间规律,术为规律之用,道为本,术为末,若本末倒置,则一世殆矣!
展开
-
虚拟机之内存管理之内存分配
这个是jvm 数据内存分布的情况,还有一个是jvm线程内存实现: 线程内存实现是每个线程都有一套独立的线程栈,也就是内存结构,当然一些静态数据,和公共数据是不在线程内存之内的。...原创 2018-07-01 10:48:34 · 2814 阅读 · 0 评论 -
volatile两大作用和指令重排
转发自:http://www.importnew.com/23535.htmlvolatile两大作用1、保证内存可见性2、防止指令重排此外需注意volatile并不保证操作的原子性。(一)内存可见性1 概念JVM内存模型:主内存和线程独立的工作内存Java内存模型规定,对于多个线程共享的变量,存储在主内存当中,每个线程都有自己独立的工作内存(比如CPU的寄存...转载 2019-03-21 14:00:52 · 653 阅读 · 0 评论 -
jvm的解释器和编译器是如何进行协作执行代码的
转发:https://www.jianshu.com/p/96d65e8f4cbf概述 做为Java开发人员,我们编写的代码是以“.java”为文件后缀的,也就是常说的源码。源码在经过javac命令编译之后,就会生成一个对应“.class”文件,这个就是字节码文件。它为Java的一次编译,到处运行提供了基础。通过JVM的映射,同一份字节码文件,可以在不同的系统上运行,这里就得益...转载 2019-02-20 11:19:48 · 588 阅读 · 0 评论 -
Java中几种常量池的区分
原文链接:http://tangxman.github.io/2015/07/27/the-difference-of-java-string-pool/ 在java的内存分配中,经常听到很多关于常量池的描述,我开始看的时候也是看的很模糊,网上五花八门的说法简直太多了,最后查阅各种资料,终于算是差不多理清了,很多网上说法都有问题,笔者尝试着来区分一下这几个概念。1.全局字符串...转载 2019-02-25 14:51:30 · 180 阅读 · 0 评论 -
Java之深入JVM - 字节码执行引擎(转)
本文为转载,https://www.cnblogs.com/royi123/p/3569511.html 前面我们不止一次的提到,Java是一种跨平台的语言,为什么可以跨平台,因为我们编译的结果是中间代码—字节码,而不是机器码,那字节码在整个Java平台扮演着什么样的角色的呢?JDK1.2之前对应的结构图如下所示:从JDK1.2开始,迫于Java运行始终笔C++慢的压力,JVM的结构也...转载 2019-02-19 15:15:32 · 320 阅读 · 0 评论 -
多线程中的CAS原理
1、什么是CAS? CAS:Compare and Swap,即比较再交换。 jdk5增加了并发包java.util.concurrent.*,其下面的类使用CAS算法实现了区别于synchronouse同步锁的一种乐观锁。JDK 5之前Java语言是靠synchronized关键字保证同步的,这是一种独占锁,也是是悲观锁。 2、CAS算法理解 对CA...转载 2019-01-10 09:06:13 · 4778 阅读 · 0 评论 -
jvm-操作数栈
栈帧、局部变量表、操作数栈栈帧局部变量表操作数栈 1.定义 栈帧(stack frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。 每一个方法从调用开始到执行完成的过程,就对应着一个栈帧在虚拟机栈里面从入栈到出栈的过程。 对于执行引擎来说,...转载 2019-01-11 15:26:01 · 7633 阅读 · 0 评论 -
jvm内存与操作系统内存之间的关系
转载自:http://blog.csdn.net/yfqnihao 这一节,主要来学习jvm的基本结构,也就是概述。说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让概念在你的脑子里变成图形,所以只要你有耐心,仔细,认真,并发挥你的想象力,这一章之后你会充满自信。当然,不是说看完本章,就对jvm了解了,jvm要学习...转载 2018-12-14 15:47:50 · 5776 阅读 · 1 评论 -
jvm导图
此图知识来源:http://wiki.jikexueyuan.com/project/java-vm/转载 2018-08-29 09:36:43 · 261 阅读 · 0 评论 -
jvm多线程底层执行流程分析
内容参考: https://www.cnblogs.com/dennyzhangdd/p/6734638.html1.对于刚开始不支持原语操作的硬件来说,多线程的执行是以开关中断来实现的。但是对于支持原语操作的硬件,比如在x86 平台上,CPU提供了在指令执行期间对总线加锁的手段。CPU芯片上有一条引线#HLOCK pin,如果汇编语言的程序中在一条指令前面加上前缀"LOCK",经过汇编以后的...原创 2018-08-31 17:12:57 · 366 阅读 · 0 评论 -
虚拟机执行子系统--类加载之双亲委托
为什么是双亲加载机制? 这样的好处在哪?加载器默认的有三个: 启动类加载器 扩展类加载器 应用程序类加载器 他们加载的位置不一样 ,启动类加载器加载的是java原生的jar包 lib下面目录的,扩展类加载的是jre/ext下sun公司或者javax的扩展包 ,应用程序加载器加载的是项目.classpath里面的jar包。当我们写了一个类 jvm在加载的时候,前提是我们自己没有写自定...原创 2018-06-29 10:00:52 · 200 阅读 · 0 评论 -
jvm
想了下,还是把jvm这个类别从java里面分出来比较好: 第一遍先写一下jvm的脉络:Java虚拟机的脉络:自动内存管理机制1. 内存分分布2. 垃圾回收机制3. 内存监控4.内存调优虚拟机执行子系统 这个就是说我们写的main程序交给jvm执行1. 类文件结构---编译后的类文件结构2. 类加载机制—双亲委托机制3. 虚拟机字节码执行引擎程序编译和代码优化高效并发1Jav...原创 2018-06-29 09:58:30 · 160 阅读 · 0 评论 -
java的cas原理分析
转发:https://blog.csdn.net/Hsuxu/article/details/9467651看了一堆文章,终于把JAVA CAS的原理深入分析清楚了。感谢GOOGLE强大的搜索,借此挖苦下百度,依靠百度什么都学习不到!参考文档:http://www.blogjava.net/xylz/archive/2010/07/04/325206.htmlhttp:/...转载 2019-06-24 14:47:10 · 314 阅读 · 0 评论