JVM
文章平均质量分 94
瑜伽娃娃
这个作者很懒,什么都没留下…
展开
-
java常量池详解
s0还是常量池 中"zhangsan”的引用,s1因为无法在编译期确定,所以是运行时创建的新对象”zhangsan”的引用,s2因为有后半部分 new String(”san”)所以也无法在编译期确定,所以也是一个新创建对象”zhangsan”的引用;所以此时的"a" + bb和"a" + "b"效果是一样的。分析:JVM对于字符串引用,由于在字符串的"+"连接中,有字符串引用存在,而引用的值在程序编译期是无法确定的,即"a" + bb无法被编译器优化,只有在程序运行期来动态分配并将连接后的新地址赋给b。原创 2023-09-27 22:13:39 · 1903 阅读 · 2 评论 -
JVM调优工具详解及实战应用
Jmap命令可以用来查看内存信息,实例个数以及占用内存大小。3. JVM调优指令调优应用思路。1. JVM调优指令。2. 调优可视化工具。原创 2023-09-25 23:18:19 · 604 阅读 · 1 评论 -
详解垃圾收集器G1
SATB相对增量更新效率会高(当然SATB可能造成更多的浮动垃圾),因为不需要在重新标记阶段再次深度扫描被删除引用对象,而CMS对增量引用的根对象会做深度扫描,G1因为很多对象都位于不同的region,CMS就一块老年代区域,重新深度扫描对象的话G1的代价会比CMS高,所以G1选择SATB不深度扫描对象,只是简单标记,等到下一轮GC再深度扫描。,这个阶段的停顿时间一般会比初始标记阶段的时间稍长,远远比并发标记阶段时间短。下图为G1收集垃圾的过程,主要有4个步骤,初始标记、并发标记、最终标记、筛选清除。原创 2023-09-24 23:14:16 · 413 阅读 · 1 评论 -
JVM垃圾收集器详解
垃圾收集算法有,分代收集理论、标记复制算法、标记清除算法、标记整理算法;原创 2023-09-23 23:40:40 · 101 阅读 · 1 评论 -
详解JVM创建对象与对象内存分配
虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个 符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。new指令对应到语言层面上讲是,new关键词、对象克隆、对象序列化等。原创 2023-09-22 23:50:37 · 92 阅读 · 1 评论 -
JVM内存模型详解
深度理解JVM模型原创 2023-09-21 23:45:23 · 362 阅读 · 0 评论 -
从JDK源码级别理解JVM类加载机制
第一步:继承 java.lang.ClassLoader 类,该类有两个核心方法,一个是loadClass(String, boolean),实现了双亲委派机制,还有一个方法是findClass,默认实现是空方法。第二步:重写findClass方法。原创 2023-09-20 23:31:46 · 87 阅读 · 1 评论