![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 73
真真最可爱
更新会很多的,适合新手刚入门的程序猿们看看。
展开
-
JVM大全——面试必考,学了就比别人强很多
Program Counter Register 程序计数器(寄存器)的作用,是记住下一条jvm指令的执行地址。原创 2022-10-04 10:04:58 · 344 阅读 · 1 评论 -
JVM——垃圾回收机制的补充说明
垃圾回收机制的补充说明垃圾回收机制关键点垃圾回收机制只回收JVM堆内存里的对象空间。对其他物理连接,比如数据库连接、输入流输出流、Socket连接无能为力现在的JVM有多种垃圾回收实现算法,表现各异。垃圾回收发生具有不可预知性,程序无法精确控制垃圾回收机制执行。可以将对象的引用变量设置为null,暗示垃圾回收机制可以回收该对象。程序员可以通过System.gc()或者Runtime.getRuntime().gc()来通知系统进行垃圾回收,会有一些效果,但是系统是否原创 2021-09-13 16:47:16 · 99 阅读 · 1 评论 -
JVM——synchronized 优化
synchronized 优化Java HotSpot 虚拟机中,每个对象都有对象头(包括 class 指针和 Mark Word)。Mark Word 平时存储这个对象的 哈希码 、 分代年龄 ,当加锁时,这些信息就根据情况被替换为 标记位 、 线程锁记录指针 、 重量级锁指针 、 线程ID 等内容5.1 轻量级锁如果一个对象虽然有多线程访问,但多线程访问的时间是错开的(也就是没有竞争),那么可以使用轻量级锁来优化。这就好比:学生(线程 A)用课本占座,上了半节课,出门了(CPU时间到),回来一原创 2021-08-12 19:24:42 · 124 阅读 · 0 评论 -
Java——JMM内存模型
JMM内存模型1. java 内存模型很多人将【java 内存结构】与【java 内存模型】傻傻分不清,【java 内存模型】是 Java MemoryModel(JMM)的意思。关于它的权威解释,请参考 :https://download.oracle.com/otn-pub/jcp/memory_model-1.0-pfdspec-oth-JSpec/memory_model-1_0-pfd-spec.pdf?AuthParam=1562811549_4d4994cbd5b59d964cd29原创 2021-08-11 23:29:35 · 172 阅读 · 0 评论 -
JVM——GC调优
JVM——GC调优预备知识:需要掌握 GC 相关的 VM 参数,会基本的空间调整,这是最基本的东西。JVM调优是一个不断调整的过程,不能指望着一蹴而就。要不断调整相关参数,观察结果进行对比分析。还有就是,不同的垃圾收集器的JVM参数是不一样的,所以具体的GC调优要根据不同的收集器做调整。推荐看下Java关于收集器调优的官方文档:https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/toc.html,最快的 GC答案是不发生原创 2021-08-10 21:29:06 · 602 阅读 · 1 评论 -
JVM——垃圾回收(二)
垃圾回收器垃圾回收器垃圾回收调优1. 垃圾回收器原创 2021-08-10 14:28:35 · 95 阅读 · 0 评论 -
JVM——垃圾回收(一)
垃圾回收如何判断对象可以回收垃圾回收算法分代垃圾回收垃圾回收器垃圾回收调优1. 如何判断对象可以回收1.1 引用计数法在引用计数法中,假设堆中每个对象都有一个引用计数器,初始值为1。每当有一个地方引用它时,计数器的值就加 1。反之,当引用失效时,则之前被引用的对象的计数器的值就减 1。而那些引用计数为 0 的对象,就可以称之为垃圾,可以被收集。该方法有一个弊端就是循环引用,如图。所以java不采用这种方法。1.2 可达性分析算法Java 虚拟机中的垃圾回收器采用可达性分析来探索所原创 2021-08-09 21:51:33 · 130 阅读 · 0 评论 -
JVM——直接内存
直接内存定义(Direct Memory)1.常见于 NIO 操作时,用于数据缓冲区。2.分配回收成本较高,但读写性能高。3.不受 JVM 内存回收管理。4.本机直接内存的分配不会受到Java 堆大小的限制,受到本机总内存大小限制。5.配置虚拟机参数时,不要忽略直接内存,防止出现OutOfMemoryError异常。从这两张图能明显看出直接内存的重要性,避免了原来的两次缓冲,节约了内存空间,缩短了运行时间。直接内存使用场景1.有很多很大的数据需要存储,它的生命周期很长。2.适合频繁的原创 2021-08-09 00:59:51 · 316 阅读 · 0 评论 -
JVM——String Table
JVM——String Table字符串常量池String table又称为String pool,字符串常量池,其存在于堆中(jdk1.7之后改的)。最重要的一点,String table中存储的并不是String类型的对象,存储的而是指向String对象的索引,真实对象还是存储在堆中。先看几道经典面试题:String s1 = "a"; //在常量池中String s2 = "b"; //在常量池中String s3 = "a" + "b"; //在常量池中St原创 2021-08-08 20:37:45 · 329 阅读 · 0 评论 -
JVM——内存结构
内存结构程序计数器虚拟机栈本地方法栈堆方法区1 程序计数器定义Program Counter Register 程序计数器(寄存器)的作用,是记住下一条jvm指令的执行地址。特点是线程私有的。不会存在内存溢出。2 虚拟机栈定义Java Virtual Machine Stacks (Java 虚拟机栈)每个线程运行时所需要的内存,称为虚拟机栈。每个栈由多个栈帧(Frame)组成,对应着每次方法调用时所占用的内存。栈帧是指每个方法运行时所需要的内存(参数,局部变量,返回地址原创 2021-08-08 00:05:51 · 90 阅读 · 0 评论