
jvm
文章平均质量分 88
zhaoliwen是猪啊
这个作者很懒,什么都没留下…
展开
-
深入理解JVM(十一)—— 类加载与字节码技术(五)
深入理解JVM(十一)—— 类加载与字节码技术(五)文章目录深入理解JVM(十一)—— 类加载与字节码技术(五)6、运行期优化分层编译即时编译器(JIT)与解释器的区别逃逸分析方法内联**内联函数****JVM内联函数**反射优化6、运行期优化分层编译JVM 将执行状态分成了 5 个层次:0层:解释执行,用解释器将字节码翻译为机器码1层:使用 C1 即时编译器编译执行(不带 profiling)2层:使用 C1 即时编译器编译执行(带基本的profiling)3层:使用 C1 即时编译器编译原创 2022-02-20 19:53:21 · 179 阅读 · 0 评论 -
深入理解JVM(十)—— 类加载与字节码技术(四)
深入理解JVM(十)—— 类加载与字节码技术(四)文章目录深入理解JVM(十)—— 类加载与字节码技术(四)5、类加载器类与类加载器启动类加载器拓展类加载器双亲委派模式自定义类加载器使用场景步骤破坏双亲委派模式5、类加载器Java虚拟机设计团队有意把类加载阶段中的**“通过一个类的全限定名来获取描述该类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需的类。实现这个动作的代码被称为“类加载器”**(ClassLoader)类与类加载器类加载器虽然只用于实现类原创 2022-02-19 21:32:28 · 173 阅读 · 0 评论 -
深入理解JVM(九)—— 类加载与字节码技术(三)
深入理解JVM(八)—— 类加载与字节码技术(二)文章目录深入理解JVM(八)—— 类加载与字节码技术(二)4、类加载阶段加载链接验证准备解析初始化发生时机4、类加载阶段加载将类的字节码载入方法区(1.8后为元空间,在本地内存中)中,内部采用 C++ 的 instanceKlass 描述 java 类,它的重要 field 有:_java_mirror 即 java 的类镜像,例如对 String 来说,它的镜像类就是 String.class,作用是把 klass 暴露给 java 使用原创 2022-02-18 20:48:33 · 229 阅读 · 0 评论 -
深入理解JVM(八)—— 类加载与字节码技术(二)
深入理解JVM(八)—— 类加载与字节码技术(二)文章目录深入理解JVM(八)—— 类加载与字节码技术(二)3、编译期处理默认构造函数自动拆装箱泛型集合取值可变参数foreachswitch字符串switch枚举枚举类匿名内部类3、编译期处理所谓的 语法糖 ,其实就是指 java 编译器把 *.java 源码编译为 *.class 字节码的过程中,自动生成和转换的一些代码,主要是为了减轻程序员的负担,算是 java 编译器给我们的一个额外福利注意,以下代码的分析,借助了 javap 工具,idea原创 2022-02-17 20:48:29 · 180 阅读 · 0 评论 -
深入理解JVM(七)—— 类加载与字节码技术(一)
深入理解JVM(七)—— 类加载与字节码技术(一)文章目录深入理解JVM(七)—— 类加载与字节码技术(一)1、类文件结构魔数版本常量池2、字节码指令javap工具图解方法执行流程通过字节码指令来分析问题构造方法cinit()Vinit()V方法调用多态原理异常处理try-catch多个single-catchfinallyfinally中的return被吞掉的异常finally不带returnSynchronized](https://nyimapicture.oss-cn-beijing.aliyu原创 2022-02-16 20:01:05 · 212 阅读 · 0 评论 -
深入理解JVM(六)—— 垃圾回收(三)
深入理解JVM(六)—— 垃圾回收(三)文章目录深入理解JVM(六)—— 垃圾回收(三)4、垃圾回收器相关概念串行Serial 收集器ParNew 收集器Serial Old 收集器吞吐量优先Parallel Scavenge 收集器**Parallel Old 收集器**响应时间优先CMS 收集器G1**定义**:适用场景G1垃圾回收阶段Young CollectionYoung Collection + CMMixed CollectionFull GCYoung Collection 跨代引用Rem原创 2022-02-15 22:54:26 · 304 阅读 · 0 评论 -
深入理解JVM(五)—— 垃圾回收(二)
深入理解JVM(五)—— 垃圾回收(二)文章目录深入理解JVM(五)—— 垃圾回收(二)2、垃圾回收算法标记-清除标记-整理复制3、分代回收回收流程GC 分析大对象处理策略线程内存溢出2、垃圾回收算法标记-清除定义:标记清除算法顾名思义,是指在虚拟机执行垃圾回收的过程中,先采用标记算法确定可回收对象,然后垃圾收集器根据标识清除相应的内容,给堆内存腾出相应的空间这里的腾出内存空间并不是将内存空间的字节清0,而是记录下这段内存的起始结束地址,下次分配内存的时候,会直接覆盖这段内存缺点:容易产生原创 2022-02-14 21:32:58 · 172 阅读 · 0 评论 -
深入理解JVM(四)—— 垃圾回收(一)
深入理解JVM(四)—— 垃圾回收(一)文章目录深入理解JVM(四)—— 垃圾回收(一)1、如何判断对象可以回收引用计数法可达性分析算法五种引用强引用软引用软引用的使用弱引用**虚引用**终结器引用引用队列1、如何判断对象可以回收引用计数法弊端:循环引用时,两个对象的计数都为1,导致两个对象都无法被释放可达性分析算法JVM中的垃圾回收器通过可达性分析来探索所有存活的对象扫描堆中的对象,看能否沿着GC Root对象为起点的引用链找到该对象,如果找不到,则表示可以回收可以作为GC Root的原创 2022-02-13 07:47:57 · 154 阅读 · 0 评论 -
深入理解JVM(三)—— 内存结构(三)
深入理解JVM(三)—— 内存结构(三)文章目录深入理解JVM(三)—— 内存结构(三)6、直接内存文件读写流程释放原理直接内存的回收机制总结6、直接内存属于操作系统,常见于NIO操作时,用于数据缓冲区分配回收成本较高,但读写性能高不受JVM内存回收管理文件读写流程使用了DirectBuffer直接内存是操作系统和Java代码都可以访问的一块区域,无需将代码从系统内存复制到Java堆内存,从而提高了效率释放原理直接内存的回收不是通过JVM的垃圾回收来释放的,而是通过unsafe.原创 2022-02-12 20:09:51 · 726 阅读 · 1 评论 -
深入理解JVM(二)—— 内存结构(二)
深入理解JVM(二)—— 内存结构(二)文章目录深入理解JVM(二)—— 内存结构(二)4、堆定义特点堆内存溢出堆内存诊断5、方法区结构内存溢出常量池运行时常量池常量池与串池的关系**串池**StringTableintern方法 1.8intern方法 1.6StringTable 垃圾回收StringTable调优4、堆定义通过new关键字创建的对象都会被放在堆内存特点所有线程共享,堆内存中的对象都需要考虑线程安全问题有垃圾回收机制堆内存溢出java.lang.OutofMemor原创 2022-02-11 22:18:42 · 147 阅读 · 0 评论 -
深入理解JVM(一)——内存结构(一)
深入理解JVM(一)——内存结构(一)文章目录深入理解JVM(一)——内存结构(一)整体架构1、程序计数器作用特点2、虚拟机栈定义演示问题辨析内存溢出线程运行诊断3、本地方法栈整体架构1、程序计数器作用用于保存JVM中下一条所要执行的指令的地址特点线程私有CPU会为每个线程分配时间片,当当前线程的时间片使用完以后,CPU就会去执行另一个线程中的代码程序计数器是每个线程所私有的,当另一个线程的时间片用完,又返回来执行当前线程的代码时,通过程序计数器可以知道应该执行哪一句指令不会存原创 2022-02-10 21:52:09 · 930 阅读 · 0 评论