![](https://img-blog.csdnimg.cn/20210802161730173.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Arthur解析系列之JVM
文章平均质量分 53
针对JVM面试点深入浅出讲解
愿好
科技推动人类物质文明发展,人文推动人类精神文明发展。
展开
-
JDK自带JVM分析工具
JVM工具原创 2022-07-27 20:36:20 · 3223 阅读 · 0 评论 -
jvm的启动过程
JVM启动原创 2022-07-16 16:06:43 · 1425 阅读 · 0 评论 -
JVM的前世今生及未来盘点
JVM的前世今生及未来盘点原创 2022-07-16 11:02:00 · 427 阅读 · 0 评论 -
关于idea如何查看JIT编译器生成的汇编代码
1、将hsdis文件放在jdk文件夹下的server文件夹下2、将以下配置放于idea的vm options中即可-XX:+UnlockDiagnosticVMOptions-XX:+PrintAssembly-XX:+LogCompilation-XX:PrintAssemblyOptions=intel io.github.viscent.mtia.ch2.JITReorde...原创 2019-06-13 11:27:16 · 1823 阅读 · 0 评论 -
创建对象JVM运行过程
原创 2018-07-11 22:30:14 · 253 阅读 · 0 评论 -
内存泄漏、内存溢出?在哪些区域会发生内存溢出?
内存泄漏:程序无法释放某块不会再使用的内存。内存溢出:运行程序所需内存不够。三种情况:即类信息、类的变量、类的对象Metaspace区域用来存放类信息,有可能会发生OOM 线程的虚拟机栈的内存是固定的,有可能发生虚拟机栈的内存溢出。(局部变量会放在栈帧中,每执行一个方法建一个栈帧,栈帧放在虚拟机栈中,一个可能造成栈溢出,另一个则是线程创建需空间1m左右,如果申请创建的线程比较多时超过栈剩余内存时会抛出OOM) 创建的对象放在堆内存中,有可能溢出...原创 2021-08-07 19:10:35 · 500 阅读 · 0 评论 -
垃圾收集算法概念、优缺点和应用
参考《java深入虚拟机》第三版本P78原创 2021-08-07 18:57:50 · 79 阅读 · 0 评论 -
垃圾收集器有哪几种
7种垃圾收集器新生代:Serial,ParNew,Parallel Scavenge老年代:Serial old, CMS,Parallel old; CMS用的标记清除算法。全域垃圾收集器:G1垃圾收集器演变史:Serial、serial old->ParNew->Parallel Scavenge、Parallel old->CMS->G1jdk1.3之前垃圾收集器有Serial,是单线程高效、新生代的,对应老年代版本Serial old;但是单线程垃圾收原创 2021-08-07 18:01:37 · 324 阅读 · 0 评论 -
为什么新生代内存需要有两个Survivor区
思路(设置survivor区的原因,为什么要设置两个); 1.为什么要设置survior区如果没有Survivor,Eden区每进行一次Minor GC,存活的对象就会被送到老年代。老年代很快被填满,触发Major GC(因为Major GC一般伴随着Minor GC,也可以看做触发了Full GC)。老年代的内存空间远大于新生代,进行一次Full GC消耗的时间比Minor GC长得多。你也许会问,执行时间长有什么坏处?频发的Full GC消耗的时间是非常可观的,这一点会影响大型程序的执行和..原创 2021-08-07 17:59:55 · 144 阅读 · 0 评论 -
对象进入老年代的时机
4个时机,a、通过jvm设置大对象直接进入老年代b、可通过jvm设置,默认15次younggc后进入老年代。c、如果一次young gc后存活对象太多无法放入survivor区直接进入老年代。d、动态年龄判定规则(主要是被TargetSurvivorRatio这个参数来控制。算的是年龄从小到大的累加和,如年龄1的占用了33%,年龄2的占用了33%,年龄3的占34%,则年龄1和2累加和超过默认的TargetSurvivorRatio(50%),年龄2和年龄3的对象都要晋升。...原创 2021-08-07 17:56:49 · 213 阅读 · 0 评论 -
JVM有几种GC,什么情况下会触发?
四种,young gc/minor gc ,old gc/major gc ,full gc,Mixed GC;young gc/minor gc :年轻代的gc,一般在Eden内存区域被占满之后,Full GC后附带执行一次Minor GCold gc/major gc :老年代gcfull gc/major gc:指的是针对新生代、老年代、永久代的全体内存空间的 垃圾回收,就是对JVM进行一次整体的垃圾回收,把各个内存区域的垃圾都回收掉。调用system.gc()通知jvm需要执行full原创 2021-08-07 17:53:13 · 2709 阅读 · 0 评论 -
JVM运行时数据区流程和各个区域的作用
java内存区域(jvm内存模型:5部分)是指 Jvm 运行时将数据分区域存储,强调对内存空间的划分。流程:在一个类A中的main方法中实例化类B的对象。首先jvm进程启动,会把类A加载到内存里,然后有一个main线程开始执行类A中的main方法,main线程关联了程序计数器,字节码执行引擎执行到哪一行指令,它就会记录到这里。其次就是main线程在执行main方法的时候,会在main线程关联的java虚拟机栈里,压入一个main方法的栈帧。接着会发现需要创建一个类B的实例对象。此时会加载类B到内存里原创 2021-08-07 17:11:49 · 165 阅读 · 0 评论 -
你了解过Java类加载机制,类加载器、双亲委派机制吗?
思路:写代码编译成字节码->使用字节码涉及类加载机制->类加载机制涉及类加载器->类加载器涉及双亲委派机制(概念和模型)我们写好的代码通过编译工具编译成字节码被打成jar包或war包,然后通过JVM才能使用的。jvm通过类加载机制来做好使用前的所有数据准备。类加载机制流程:加载 -> 验证 -> 准备 -> 解析 -> 初始化 -> 使用 -> 卸载加载时机:代码中用到这个类的时候(将class文件加载到JVM中)验证、准备、初始化(原创 2021-08-02 16:36:20 · 99 阅读 · 0 评论