
JVM
April_FGR
这个作者很懒,什么都没留下…
展开
-
【每日一题】JVM篇-回收算法
判断对象是否存活的算法引用计数算法:给对象添加一个引用计数器,每当有一个地方引用它时,计数器加1;当引用失效时,计数器就减1;任何时刻计数器都为0的对象就是不可能再被使用的。它很难解决对象之间相互循环引用的问题根搜索算法:通过一系列的名为GC Roots的对象作为起点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的...原创 2019-12-12 09:04:57 · 205 阅读 · 0 评论 -
【每日一题】JVM篇-类的实例化顺序
类的声明周期加载、验证、准备、解析、初始化、使用、卸载初始化的时机遇到new、getstatic、putstatic、invokestatic这4条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。生成这4条指令的最常见的代码场景是:使用new关键字实例化对象的时候、读取或设置一个类的静态字段(被final修饰、已在编译器把结果放入常量池的静态字段除外)的时候、调用一个类的静态方...原创 2019-12-11 09:22:17 · 233 阅读 · 0 评论 -
【每日一题】JVM篇-类加载为什么要使用双亲委派模式,有没有什么场景是打破了这个模式
类加载器站在Java虚拟机的角度讲,只存在两种不同的类加载器:一种是启动类加载器,这个类加载器使用C++语言实现,是虚拟机自身的一部分:另外一种就是所有其他的类加载器,这些类加载器都由Java语言实现,独立于虚拟机外部,并且全都继承自抽象类java.lang.ClassLoader。从Java开发人员的角度来看,类加载器就还可以划分的更细致一些,绝大部分Java程序都会使用到以下三种系统提供的...原创 2019-12-10 09:34:32 · 2430 阅读 · 1 评论 -
【每日一题】JVM篇-年轻代到年老代的晋升过程的判断条件是什么呢
长期存活的对象进入老年代虚拟机给每个对象定义了一个对象年龄计数器。如果对象在Eden出生并经过第一次MinorGC后仍然存活,并且能被Survivor容纳的话,将被移动到Survivor空间,并将对象年龄设为1.对象在Survivor区每熬过一次MinorGC年龄就加一岁,当它的年龄增加到一定程度(默认为15岁)时,就会晋升到老年代中,对象晋升老年代的年龄阈值,可以通过参数-XX:MaxTen...原创 2019-12-09 09:28:47 · 1536 阅读 · 0 评论 -
【每日一题】JVM篇-什么情况下会出现内存溢出,内存泄漏
内存泄漏memory leak :是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。Java内存泄漏的根本原因是什么呢?长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄漏,尽管短生命周期对象已经不再需要,但是因为长生命周期持有它的引用而导致不能被回收,这就是Java中内存泄漏的发生场景。具体主要有如下几大类:静态集合...原创 2019-12-07 09:19:26 · 1093 阅读 · 0 评论 -
【每日一题】JVM篇-详解JVM内存模型
PC计数器:作用是当前线程所执行字节码的行号指示器内容是正在执行的虚拟机字节码指令的地址,如果是Natvie方法,则内容为空。意义是在线程切换后恢复到正确的执行位置虚拟机栈:描述的是Java方法执行的内存模型,方法被执行的时候会同时创建一个栈帧,存放的内容是局部变量表、操作栈、动态链接以及方法出口等。一个方法从被调用到执行结束对应的是一个栈帧从入栈到出栈的过程局部变量表的内容是基本数...原创 2019-12-06 10:08:18 · 350 阅读 · 0 评论