
JVM
文章平均质量分 94
patient&training
这个作者很懒,什么都没留下…
展开
-
CMS垃圾收集器详解
概述CMS垃圾收集器是一款优秀的老年代并发垃圾收集器,通过与用户线程并发执行的方式减少GC停顿的时间。本文主要聊一下CMS设计到的相关的数据结构、具体的执行过程、运行中会出现的异常情况。在CMS之前并行垃圾收集器通过下图方式进行,虽然GC阶段多线程并行执行单此时用户线程是完全暂停的。如果GC时间过长,将引发服务响应超时、调用接口超时等各类异常。而CMS垃圾收集器大部分时间GC线程与用户线程并发执行,只有在初始标记和重新标记阶段才暂停用户线程总体思路:当达到GC条件时,开始并发标记存转载 2021-05-18 14:35:55 · 3832 阅读 · 1 评论 -
Java虚拟机(JVM)面试知识汇总
JVM类加载过程什么是JVM的类加载机制?首先,在代码编译后,就会生成JVM(Java虚拟机)能够识别的二进制字节流文件(*.class)。而JVM把Class文件中的类描述数据从文件加载到内存,并对数据进行校验、转换解析、初始化,使这些数据最终成为可以被JVM直接使用的Java类型,这个说来简单但实际复杂的过程叫做JVM的类加载机制。什么是类初始化?Class文件中的“类”从加载到JVM内存中,到卸载出内存过程有七个生命周期阶段。类加载机制包括了前五个阶段。如下图所示:.转载 2021-03-07 20:48:21 · 509 阅读 · 0 评论 -
深入理解JVM虚拟机:(一)Java内存区域
运行时数据区域Java虚拟机在执行Java程序的过程中会把它所管理的内存划分成若干个不同的数据区域,这些数据区域都有各自的用途,以及创建和销毁时间,Java虚拟机所管理的内存将会包括以下几个运行时数区域。1.程序计数器程序计数器是一块比较小的内存空间,它可以看做是当前线程所执行的字节码指令的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条...原创 2019-03-05 14:33:51 · 184 阅读 · 0 评论 -
深入理解JVM虚拟机:(二)对象访问
对象的创建虚拟机遇到一条new指令时,首先检查指令的参数能否在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化过。如果没有,必须先执行相应的类加载过程。接下来虚拟机为新生对象分配内存。对象所需要的内存在类加载完成后可以被完全确定,所以只需要把一块确定大小的内存区域从堆中划分出来给这个对象即可: 如果堆的内存是规整的,所有使用的内存在一边,未使用...转载 2019-03-05 15:04:24 · 129 阅读 · 0 评论 -
深入理解JVM虚拟机:(三)OutOfMemoryError异常
JVM内存区域中,除了程序计数器外,其他几个运行时区域都有可能发生OutOfMemoryError(OOM)异常。本文对OOM异常进行总结,通过代码验证JVM规范中描述的运行时区域存储的内容;了解可能导致这些区域OOM异常的代码,能够在工作中根据异常代码对内存哪一出区域进行定位。1.Java堆溢出Java堆用于存储对象实例,只要不断地创建对象,并且保证GC Roots到对象之间有可达路径...转载 2019-03-05 16:24:03 · 154 阅读 · 0 评论 -
深入理解JVM虚拟机:(四)垃圾收集器与内存分配策略
一、 技术背景你要了解吧 按照套路是要先装装X,谈谈JVM垃圾回收的前世今生的。说起垃圾回收(GC),大部分人都把这项技术当做Java语言的伴生产物。事实上,GC的历史比Java久远,早在1960年Lisp这门语言中就使用了内存动态分配和垃圾回收技术。设计和优化C++这门语言的专家们要长点心啦~~二、 哪些内存需要回收? 猿们都知道JVM的内存结构包括五大区域:程序计数器、虚拟机栈...转载 2019-03-11 14:43:09 · 391 阅读 · 0 评论 -
深入理解JVM虚拟机:(五)GC调优与JVM实用参数
1.1 GC相关参数总结1.与串行回收器相关的参数 -XX:+UseSerialGC:在新生代和老年代使用串行回收器。 -XX:+SuivivorRatio:设置 eden 区大小和 survivor 区大小的比例。 -XX:+PretenureSizeThreshold:设置大对象直接进入老年代的阈值。当对象的大小超过这个值时,将直接在老年代分配。 -XX...转载 2019-03-11 14:51:30 · 791 阅读 · 0 评论 -
深入理解JVM虚拟机:(六)类加载机制和类加载器(ClassLoader)的详解
当程序主动使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、连接、初始化3个步骤来对该类进行初始化。如果没有意外,JVM将会连续完成3个步骤,所以有时也把这个3个步骤统称为类加载或类初始化。 1.概述Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性...转载 2019-03-13 14:04:16 · 602 阅读 · 0 评论