![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 82
yuyivie1
这个作者很懒,什么都没留下…
展开
-
JVM学习笔记1:字节码指令集
一.字节码指令集简介:Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的操作码(opcode)以及跟随其后的零至多个代表此操作所需参数的操作数(operand)所构成。虚拟机中许多指令并不包含操作数,只有一个操作码。如果忽略异常处理,那么java虚拟机的解释器通过下面这段伪代码的循环即可有效的工作。do { 自动计算pc寄存器以及从pc寄存器的位置取出操作码; ...原创 2018-11-05 15:55:25 · 298 阅读 · 0 评论 -
JVM学习笔记9:Java内存模型JMM
一 概述 Java内存模型定义了程序中各个实例变量的访问规则,即在虚拟机中将变了存储到内存和从内存中取出变量这样的底层细节。它主要是来操作实例变量、静态字段及构成数组对象的元素。因为局部变量及方法参数是线程私有的不会被共享,所以JMM不会影响局部变量及方法。 从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memory)中,...原创 2018-12-05 23:51:24 · 300 阅读 · 0 评论 -
JVM学习笔记8:垃圾收集(垃圾收集算法及垃圾收集器)
一 垃圾收集算法 标记清除法(Mark-Sweep) 算法分成标记和清除两个阶段,先标记出要回收的对象,然后统一回收这些对象。形如:优点: 简单缺点是: 效率不高,标记和清除的效率都不高 标记清除后会产生大量不连续的内存碎片,从而导致在分配大对象时触发GC 2 复制算法(Copying) 把内存分成两块完全相同的区域,...原创 2018-11-27 20:26:53 · 370 阅读 · 0 评论 -
JVM学习笔记6:字节码执行引擎
一 概述 JVM的字节码执行引擎,功能基本就是输入字节码文件,然后对字节码进行解析并处理,最后输出执行的结果。其实现方式可能有通过解释器直接解释执行,或者是通过即时编译器产生本地代码,也就是编译执行,当然也可能两者皆有。1:解释运行 以解释方式运行字节码解释执行的意思是:读一句执行一句2:编译运行(JIT) 将字节码编译成机器码直接执行机器码运行...原创 2018-11-20 19:41:18 · 189 阅读 · 0 评论 -
JVM学习笔记7:垃圾收集(对象的存活及引用)
一 概述 简单的说内存中已经不再被使用到对象(非存活对象)或方法所占用的的空间就是垃圾。将这部分空间释放,即为垃圾回收。 由于PC寄存器(程序计数器),java栈,本地方法栈 这3个区域都是随线程生线程灭的,因此这几个区域的内存分配和回收都具备确定性,当方法或线程结束时内存自然就回收了。 java堆和方法区在一个接口中的多个实现类所需要的内存可能不一样,一个方法中多个分...原创 2018-11-21 19:36:38 · 188 阅读 · 0 评论 -
JVM学习笔记3:字节码操纵框架ASM
一:ASM概述 ASM是一个Java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。ASM可以直接产生二进制class文件,也可以在类被加载入Java虚拟机之前动态改变类行为,ASM从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。目前许多框架如cglib、Hibernate、Spring都直接或间接地使用ASM操作字节码。二:AS...原创 2018-11-12 23:38:54 · 1240 阅读 · 0 评论 -
JVM学习笔记5:内存分配
一:jvm的内存简化架构 二:运行时数据区 Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机的退出而销毁。另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程的开始和结束而创建和销毁。其分为pc寄存器(程序计数器)、java虚拟机栈、Java堆、方法区、运行常量池、本地方法栈 PC(Program C...原创 2018-11-15 18:03:57 · 154 阅读 · 0 评论 -
JVM学习笔记4:类的加载、连接、初始化。
一:加载、连接、初始化加载:查找并加载类文件的二进制数据 类的加载要完成: (1)通过类的全限定名来获取该类的二进制字节流 (2)把二进制字节流转化为方法区的运行时数据结构 (3)在堆上创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。 类加载的最终产物就是在堆中的class对象;Class对...原创 2018-11-13 22:53:39 · 254 阅读 · 0 评论 -
JVM学习笔记2:Class文件格式
一:class文件概述 Class文件是JVM的输入,Java虚拟机规范中定义了Class文件的结构。Class文件是JVM实现平台无关、技术无关的基础。 1:Class文件是一组以8字节为单位的字节流,各个数据项目按顺序紧凑排列 2:对于占用空间大于8字节的数据项,按照高位在前的方式分割成多个8字节进行存储 3:Class文件格式里面只有两种类型...原创 2018-11-08 20:04:51 · 197 阅读 · 0 评论 -
JVM学习笔记10:锁优化
一.自旋锁与自适应自旋自旋锁:如果线程可以很快获得锁,那么可以不在OS层挂起线程,而是让线程做几个忙循环,这就是自旋。 自适应自旋:自旋的时间不再固定,而是由前一次在同一个锁上的自旋时间和锁的拥有者状态来决定。 JDK1.7以上已经是内置实现,默认开启。 如果锁被占用时间很短,自旋成功,那么能节省线程挂起、以及切换时间,从而提升系统性能如果锁被占用时间很长,自旋失败,会白白耗费处理器资...原创 2018-12-07 00:10:34 · 233 阅读 · 0 评论