![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java虚拟机
文章平均质量分 94
汐梦聆海
過去を捨てなくては 未来の場所がない
展开
-
volatile关键字的作用
在说volatile关键字之前,首先要了解一下java内存模型JMM。JMM(Java Memory Model)JMM目的是为了屏蔽各种硬件和操作系统之间的内存访问差异,从而让JAVA程序在各种平台对内存的访问一致。JMM规定了所有的变量都存储在主存中,每个线程都有自己独立的工作空间,线程对变量的操作必须先从主存中读取到自己的工作内存中然后再进行操作,最后回写回主存。(值得注意的是,每一个线程对应由一个CPU来执行,CPU和主存之间的速度是有差异的,因此每个线程的工作内存有点相当于缓存cache的功原创 2021-12-03 15:45:15 · 459 阅读 · 1 评论 -
字节码(.class)文件解读
字节码文件是什么我们在命令后使用 java 命令,就能将java源文件(.java)编译成对应的字节码文件(.class)。字节码文件是一种八位字节的二进制流文件,各个数据项按照一定顺序从前到后紧密排列。因此,这样的安排会使得字节码文件非常紧凑,可以被jvm快速的加载到内存中,并且占用较少的内存空间。java源文件在被编译器编译之后,每个类(或者接口)都单独占据一个字节码文件。类中所有信息都在字节码文件中有所描述,由于字节码文件非常灵活,它对类的描述能力甚至强于java源文件。字节码文件中的信息是一项原创 2021-12-02 14:50:02 · 7429 阅读 · 3 评论 -
JVM垃圾回收原理和算法
垃圾定位法要进行垃圾回收,第一步肯定是要判断出哪些对象属于垃圾,因此需要利用垃圾定位法来判断出垃圾对象。定位垃圾的方法主要有两种:(1)引用计数法;(2)可达性分析法。引用计数法:通过给对象增加引用计数器,记录当前对象被引用的次数,当引用次数为0时就会标记为垃圾;该方法在循环引用的情况下无法解决,会造成内存泄漏,如对象A引用对象B,对象B同时引用对象A(A->B, B->A)。可达性分析法:通过规定的一些GC根节点出发去查找,如果一个对象和根节点之间没有引用路径,或引用链不可达原创 2021-12-01 15:17:45 · 435 阅读 · 1 评论