![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 70
java虚拟机
radient-lsr
这个作者很懒,什么都没留下…
展开
-
JVM的内存结构
本地内存指的是操作系统分配给进程的内存空间,与 Java 堆不同,它并不受 JVM 管理,因此在内存使用上更加灵活。需要注意的是,由于元空间使用的是本地内存,因此它的大小不再受到 Java 堆大小的限制,但是它的大小仍然会受到操作系统本身的限制,因此需要根据具体的系统配置来进行调整。类信息的存储方式:永久代中的类信息是使用永久代专用的类加载器加载和卸载的,而元空间中的类信息是使用与应用程序类加载器相同的类加载器加载和卸载的。堆空间是JVM管理的最大一块内存空间,同时堆内存空间也是可配置的。原创 2023-08-15 17:10:18 · 22 阅读 · 0 评论 -
JVM --- 类文件结构
【代码】JVM --- 类文件结构。原创 2023-08-15 17:22:02 · 21 阅读 · 0 评论 -
JVM --- GC垃圾回收
无需手动编码,但其内部配合引用队列使用,在垃圾回收时,终结器引用入队(被引用对象 暂时没有被回收),再由 Finalizer 线程通 过终结器引用找到被引用对象并调用它的 finalize 方法,第二次 GC 时才能回收被引用对象。 仅有软引用引用该对象时,在垃圾回收后,内存仍不足时会再次出发垃圾回收,回收软引用对象可以配合引用队列来释放软引用自身。当一个对象不再被引用时,它将成为垃圾对象,由Java的垃圾收集器负责回收内存空间,释放对象所占用的资源。原创 2023-08-15 17:16:59 · 41 阅读 · 0 评论 -
JVM --- 类加载器
网上的大部分自定义类加载器文章,几乎都是贴一段实现代码,然后分析一两句自定义的原理。但是我觉得首先得把为什么需要自定义加载器这个问题搞清楚,因为如果不明白它的作用的情况下,还要去学习它显然是很让人困惑的。(1)加密:Java代码可以轻易的被反编译,如果你需要把自己的代码进行加密以防止反编译,可以先将编译后的代码用某种加密算法加密,类加密后就不能再用Java的ClassLoader去加载类了,这时就需要自定义ClassLoader在加载类的时候先解密类,然后再加载。原创 2023-08-15 17:23:12 · 17 阅读 · 0 评论 -
JDK和JRE的关系及JVM的学习内容
什么是JDK&JRE学习内容原创 2023-08-15 17:05:24 · 69 阅读 · 0 评论 -
JMM --- 内存模型
此时synchronized外的线程进来就发现了这个对象new出来了,然后就拿到了这个对象,实际上这个对象还没被分配地址,然后一用,发现用的是null,此时我们添加了volatile防止对象创建时候的指令重排现象,就解决了单例模式会出现的问题。学生(线程 A)用课本占座,上了半节课,出门了(CPU时间到),回来一看,发现课本没变,说明没 有竞争,继续上他的课。(阻塞是耗时的,还需要记录类信息等等…,jvm认为只要保证最后的一致性就可以了,然而有些场景是会出现问题的,就拿我们的双检加锁的单例模式来说吧。原创 2023-08-15 17:26:49 · 877 阅读 · 0 评论 -
JVM --- 语法糖
所谓的 语法糖 ,其实就是指 java 编译器把 .java 源码编译为 .class 字节码的过程中,自动生成和转换的一些代码,主要是为了减轻程序员的负担,算是 java 编译器给我们的一个额外福利注意,以下代码的分析,借助了 javap 工具,idea 的反编译功能,idea 插件 jclasslib 等工具。另外, 编译器转换的结果直接就是 class 字节码,只是为了便于阅读,给出了 几乎等价 的 java 源码方式,并不是编译器还会转换出中间的 java 源码,切记。原创 2023-08-15 17:21:15 · 20 阅读 · 0 评论