JVM
文章平均质量分 73
真真最可爱
更新会很多的,适合新手刚入门的程序猿们看看。
展开
-
JVM大全——面试必考,学了就比别人强很多
Program Counter Register 程序计数器(寄存器)的作用,是记住下一条jvm指令的执行地址。原创 2022-10-04 10:04:58 · 327 阅读 · 1 评论 -
JVM——垃圾回收机制的补充说明
垃圾回收机制的补充说明 垃圾回收机制关键点 垃圾回收机制只回收JVM堆内存里的对象空间。 对其他物理连接,比如数据库连接、输入流输出流、Socket连接无能为力 现在的JVM有多种垃圾回收实现算法,表现各异。 垃圾回收发生具有不可预知性,程序无法精确控制垃圾回收机制执行。 可以将对象的引用变量设置为null,暗示垃圾回收机制可以回收该对象。 程序员可以通过System.gc()或者Runtime.getRuntime().gc()来通知系统进行垃圾回收,会有一些效果,但是系统是否原创 2021-09-13 16:47:16 · 96 阅读 · 1 评论 -
JVM——synchronized 优化
synchronized 优化 Java HotSpot 虚拟机中,每个对象都有对象头(包括 class 指针和 Mark Word)。Mark Word 平时存储这个对象的 哈希码 、 分代年龄 ,当加锁时,这些信息就根据情况被替换为 标记位 、 线程锁记录指 针 、 重量级锁指针 、 线程ID 等内容 5.1 轻量级锁 如果一个对象虽然有多线程访问,但多线程访问的时间是错开的(也就是没有竞争),那么可以使用轻量级锁来优化。这就好比: 学生(线程 A)用课本占座,上了半节课,出门了(CPU时间到),回来一原创 2021-08-12 19:24:42 · 118 阅读 · 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 · 161 阅读 · 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 · 584 阅读 · 1 评论 -
JVM——垃圾回收(二)
垃圾回收器 垃圾回收器 垃圾回收调优 1. 垃圾回收器原创 2021-08-10 14:28:35 · 91 阅读 · 0 评论 -
JVM——垃圾回收(一)
垃圾回收 如何判断对象可以回收 垃圾回收算法 分代垃圾回收 垃圾回收器 垃圾回收调优 1. 如何判断对象可以回收 1.1 引用计数法 在引用计数法中,假设堆中每个对象都有一个引用计数器,初始值为1。每当有一个地方引用它时,计数器的值就加 1。反之,当引用失效时,则之前被引用的对象的计数器的值就减 1。而那些引用计数为 0 的对象,就可以称之为垃圾,可以被收集。 该方法有一个弊端就是循环引用,如图。所以java不采用这种方法。 1.2 可达性分析算法 Java 虚拟机中的垃圾回收器采用可达性分析来探索所原创 2021-08-09 21:51:33 · 121 阅读 · 0 评论 -
JVM——直接内存
直接内存 定义(Direct Memory) 1.常见于 NIO 操作时,用于数据缓冲区。 2.分配回收成本较高,但读写性能高。 3.不受 JVM 内存回收管理。 4.本机直接内存的分配不会受到Java 堆大小的限制,受到本机总内存大小限制。 5.配置虚拟机参数时,不要忽略直接内存,防止出现OutOfMemoryError异常。 从这两张图能明显看出直接内存的重要性,避免了原来的两次缓冲,节约了内存空间,缩短了运行时间。 直接内存使用场景 1.有很多很大的数据需要存储,它的生命周期很长。 2.适合频繁的原创 2021-08-09 00:59:51 · 304 阅读 · 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 · 315 阅读 · 0 评论 -
JVM——内存结构
内存结构 程序计数器 虚拟机栈 本地方法栈 堆 方法区 1 程序计数器 定义 Program Counter Register 程序计数器(寄存器)的作用,是记住下一条jvm指令的执行地址。 特点 是线程私有的。 不会存在内存溢出。 2 虚拟机栈 定义 Java Virtual Machine Stacks (Java 虚拟机栈)每个线程运行时所需要的内存,称为虚拟机栈。 每个栈由多个栈帧(Frame)组成,对应着每次方法调用时所占用的内存。 栈帧是指每个方法运行时所需要的内存(参数,局部变量,返回地址原创 2021-08-08 00:05:51 · 87 阅读 · 0 评论