![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM虚拟机夯实系列
文章平均质量分 83
你神仙呐
这个作者很懒,什么都没留下…
展开
-
JVM虚拟机夯实系列-虚拟机类加载器
一个典型的例子便是JNDI服务,JNDI现在已经是Java的标准服务, 它的代码由启动类加载器来完成加载(在JDK 1.3时加入到rt.jar的),肯定属于Java中很基础的类型 了。是由这个模型自身的缺陷导致的,双亲委派很好地解决了各个类 加载器协作时基础类型的一致性问题(越基础的类由越上层的加载器进行加载),基础类型之所以被 称为“基础”,是因为它们总是作为被用户代码继承、调用的API存在,但程序设计往往没有绝对不变的完美规则,如果有基础类型又要调用回用户的代码,那该怎么办呢?原创 2023-09-17 15:32:00 · 37 阅读 · 1 评论 -
JVM虚拟机夯实系列-虚拟机类加载的过程
保证方法体中的类型转换总是有效的,例如可以把一个子类对象赋值给父类数据类型,这是安全 的,但是把父类对象赋值给子类数据类型,甚至把对象赋值给与它毫无继承关系、完全不相干的一个 数据类型,则是危险和不合法的。·类中的字段、方法是否与父类产生矛盾(例如覆盖了父类的final字段,或者出现不符合规则的方法重载,例如方法参数都一致,但返回值类型却不同等)。同样的,实现类初始化时也。·指向常量的各种索引值中是否有指向不存在的常量或不符合类型的常量。·这个类的父类是否继承了不允许被继承的类(被final修饰的类)。原创 2023-09-17 15:30:13 · 27 阅读 · 1 评论 -
JVM虚拟机夯实系列-虚拟机类加载机制
如果一个java.lang.invoke.MethodHandle实例最后的解析结果为REF_getStatic、REF_putStatic、REF_invokeStatic、REF_newInvokeSpecial四种类型的方法句 柄,并且这个。而用到这写指令的情况通常为:使用new关键字实例化对象时、读取或者设置一个类型的静态字段(被final修饰、已在编译器把结果放入常量池的静态字段除外)以及调用一个类型的静态方法的时候。的特点实现的,这就需要类加载时稍微。完成的,而其动态扩展的特性是。原创 2023-09-17 15:27:57 · 23 阅读 · 1 评论 -
JVM虚拟机夯实系列-垃圾收集器选择和内存分配与回收
三者构成了一个不可能三角,也就是说,通常一款优秀的收集器最多可以同时达成其中的两项。而一般垃圾收集器的选择会从一下三点出发:①应用程序的,需要则需要关,希望则则更。②运行应用的等等。③使用。原创 2023-09-17 15:24:30 · 30 阅读 · 1 评论 -
JVM虚拟机夯实系列-垃圾收集器
面向服务端应用的垃圾收集器,目的是替代CMS收集器,JDK9后,G1已经取代Parallel Scavenge加Parallel Old组合,称为服务端模式下的默认垃圾收集器。尽管在其进行垃圾收集时,会将所有正常的用户线程暂停,出现停顿(STW),但Serial收集器仍是HotSpot虚拟机客户端(Client)模式下的默认新生代收集器,因为CMS收集器的并发性,所以要在老年代预留出足够的空间进行用户线程的执行,JDK5设置老年代被使用68%的阈值就激活CMS收集器,JDK6设置92%的阈值。原创 2023-09-17 15:20:32 · 38 阅读 · 1 评论 -
JVM虚拟机夯实系列-垃圾收集算法
HotSpot虚拟机⾥⾯关注吞吐量的Parallel Scavenge收集器是基于标记-整理算法的,⽽关注延迟的CMS收集器则是基于标记-清除算法的,这也从侧⾯印证这点。CMS收集器在面临空间碎片过多时会采用“和稀泥”的方法,在空间碎片处于可容忍范围内时,采用标记清除算法,当空间碎片达到一定数量时采用标记整理算法。(如将⾃⼰或者某个属性赋值)时维护记录数据的正确性,会增加⼀些运⾏时的开销,但⽐起收集时扫描整个⽼年代来说仍然是划算的。因为新生代的存活率比较低,所以虚拟机都采用这种算法进行新生代回收。原创 2023-09-17 15:11:56 · 51 阅读 · 1 评论 -
JVM虚拟机夯实系列-垃圾回收机制
Java内存运行时,所以这几个区域的内存分配和回收都有确定性,候内存就了。而Java堆和方法区则不一样,一个接口的多个实现类需要的内存不一样,一个方法的多个分支需要的内存也不一样,只有在 程序运行期间才会知道创建哪些对象,原创 2023-09-15 13:35:19 · 36 阅读 · 0 评论