![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
夜勿语
热爱技术,分享技术,博客园地址:https://www.cnblogs.com/yewy/
展开
-
深入探究JVM之方法调用及Lambda表达式实现原理
文章目录前言正文解析分派静态分派动态分派单分派和多分派动态分派的实现Lambda表达式的实现原理MethodHandle总结前言在最开始讲解JVM内存结构的时候有简单分析过方法的执行原理——每一次方法调用都会生成一个栈帧并压入栈中,方法链的执行就是一个个栈帧弹出栈帧的过程,本篇就从字节码层面详细讲讲方法的调用细节。正文解析Java中方法的调用对应字节码有5条指令:invokestatic:用于调用静态方法。invokespecial:用于调用实例构造器()方法、私有方法和父类中的方法。in原创 2020-08-05 23:12:46 · 810 阅读 · 0 评论 -
深入探究JVM之类加载与双亲委派机制
文章目录前言类的生命周期加载验证准备解析初始化案例一案例二案例三案例四类加载器类加载器和双亲委派模型破坏双亲委派模型第一次SPITomcatOSGI总结前言前面学习了虚拟机的内存结构、对象的分配和创建,但对象所对应的类是怎么加载到虚拟机中来的呢?加载过程中需要做些什么?什么是双亲委派机制以及为什么要打破双亲委派机制?类的生命周期类的生命周期包含了如上的7个阶段,其中验证、准备、解析统称为连接 ,类的加载主要是前五个阶段,每个阶段基本上保持如上顺序开始(仅仅是开始,实际上执行是交叉混合的),只有解析原创 2020-08-01 12:21:13 · 676 阅读 · 0 评论 -
深入探究JVM之垃圾回收算法实现细节
文章目录前言垃圾回收算法实现细节根节点枚举安全点安全区域记忆集和卡表写屏障并发的可达性分析低延迟GC前言本篇紧接上文,主要讲解垃圾回收算法的实现细节以及对目前最前沿的低延迟GC(Shenandoah、ZGC)做个介绍。垃圾回收算法实现细节根节点枚举我们知道目前的JVM的垃圾回收器都是采用可达性分析算法标记存活对象,该算法首先需要找到GC Roots,然后通过这些根节点向下搜索,能搜索到的就标记为存活对象,未被标记的最后就会被垃圾回收器回收。那你是否想过垃圾回收器怎么找到GC Roots呢?对于在方原创 2020-07-27 15:59:25 · 503 阅读 · 3 评论 -
深入探究JVM之垃圾回收器
文章目录前言正文一、垃圾收集算法标记-复制标记-清除标记-整理分代回收二、常用的垃圾回收器Serial/SerialOldParNewParallel Scavenge/ParallelOldCMSGarbage First总结前言JVM的自动内存管理得益于不断发展的垃圾回收器,从最初的单线程收集到现在并发收集,垃圾回收器的开发者们一直在致力于如何降低GC过程中的停顿时间(STW)以及提高吞吐量,但直到现在也不存在一款完美的垃圾回收器,只能根据不同的场景选择最合适的。所以需要了解每款垃圾回收器出现的背景原创 2020-07-25 18:23:12 · 733 阅读 · 0 评论 -
深入探究JVM之对象创建及分配策略
前言Java是面向对象的语言,所谓“万事万物皆对象”就是Java是基于对象来设计程序的,没有对象程序就无法运行(8大基本类型除外),那么对象是如何创建的?在内存中又是怎么分配的呢?正文对象的创建方式在Java中我们有几种方式可以创建一个新的对象呢?总共有以下几种方式:new关键字反射clone反序列化Unsafe.allocateInstance为了便于说明和理解,下文仅针对new出来的对象进行讨论。对象的创建过程Java中对象的创建过程就包含上图中的5个步骤,首先需要验证待创原创 2020-07-22 22:54:24 · 1210 阅读 · 0 评论 -
深入探究JVM之内存结构及字符串常量池
前言Java作为一种平台无关性的语言,其主要依靠于Java虚拟机——JVM,我们写好的代码会被编译成class文件,再由JVM进行加载、解析、执行,而JVM有统一的规范,所以我们不需要像C++那样需要程序员自己关注平台,大大方便了我们的开发。另外,能够运行在JVM上的并只有Java,只要能够编译生成合乎规范的class文件的语言都是可以跑在JVM上的。而作为一名Java开发,JVM是我们必须要学习了解的基础,也是通向高级及更高层次的必修课;但JVM的体系非常庞大,且术语非常多,所以初学者对此非常的头疼。本原创 2020-07-20 23:36:53 · 1280 阅读 · 13 评论