![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
文章平均质量分 95
jvm的面试知识点总结
zhifou123456
记录是为了更好的思考
展开
-
JVM-java内存模型及java关键字内存语义
什么是java内存模型,就我理解,可以如上图所示。首先,因为java的内存模型是一个二级缓存,线程首先需要将数据写入到本地缓存,然后才能将本地缓存的数据刷到主内存中,所以就出现了可见性的和有序性的问题。由于cpu会进行优化,会进行cpu级别指令重排序。并且在java前端编译器中,也会对java代码进行优化,也有可能对代码进行重排序,这就导致了有序性问题。为了解决上述问题,jmm是怎么做的呢?jmm会禁用掉部分指令重排序。同时针对java的二级缓存带来的问题,java会在部分指令之间加入内存屏障。原创 2024-03-28 22:05:30 · 821 阅读 · 1 评论 -
JVM-类加载机制
符号引用其实就是字节码文件常量池里面名称标识,比如变量名,方法名等就是符号引用。直接引用就是变量或者方法的地址。在解析的时候其实就是将方法的名称,找到对应的存储地址,并且生成一条指令访问该地址。即数组不通过类加载器进行加载。java的类加载器主要是分成4类:1.启动类加载器:主要加载java核心库里面的类,比如rt.jat,是由c++实现的,如果要把代码交给启动类加载器加载,可以直接使用null便可;2.扩展类加载器:主要加载/lib/ext目录下面的文件;原创 2024-03-26 22:16:49 · 792 阅读 · 1 评论 -
JVM - java内存结构
在理解元空间和运行时常量池之前,我们有必要了解到java的类和对象究竟是如何在内存中存储的。众所周知,java是由C++写的,而在类加载的时候,其实就是将java字节码读入到了内存中。JVM解析字节码,并且生成一个Klass对象。Klass对象其实就是对一个java类的描述,可以看他的一些属性:_annotations:保存该类的所有注解;_java_fields_count:已声明的Java字段数量;_constants:保存该类的常量池指针......原创 2024-03-12 23:24:13 · 1094 阅读 · 1 评论