JVM GC
胖虎aaa
这个作者很懒,什么都没留下…
展开
-
垃圾回收器
需要注意的是,每一个回收器都存在Stop The World 的问题,只不过各个回收器在Stop The World 时间优化程度、算法的不同,可根据自身需求选择适合的回收器。Serial(-XX:+UseSerialGC)从名字我们可以看出,这是一个串行收集器。Serial收集器是Java虚拟机中最基本、历史最悠久的收集器。在JDK1.3之前是Java虚拟机新生代收集器的唯一选择。目前也是ClientVM下ServerVM 4核4GB以下机器默认垃圾回收器。Serial收集器并不是只能使用一个CPU原创 2020-07-02 19:19:17 · 78 阅读 · 0 评论 -
JVM GC 算法
根搜索算法根搜索算法是从离散数学中的图论引入的,程序把所有引用关系看作一张图,从一个节点GC ROOT 开始,寻找对应的引用节点,找到这个节点后,继续寻找这个节点的引用节点。当所有的引用节点寻找完毕后,剩余的节点则被认为是没有被引用到的节点,即无用的节点。上图红色为无用的节点,可以被回收。目前Java中可以作为GC ROOT的对象有:1、虚拟机栈中引用的对象(本地变量表)2、方法区中静态属性引用的对象3、方法区中常量引用的对象4、本地方法栈中引用的对象(Native对象)基本所有GC算法都原创 2020-07-02 19:01:56 · 162 阅读 · 0 评论 -
对于JVM中GC系统的理解
对于JVM中的GC系统而言,什么样的对象是垃圾对象?不可达对象,就是不能通过任何引用来访问到这个对象,此时就会变成垃圾对象。在测试时,加入JVM参数分析:-XX:+PrintGCDetails下面来测试class ClassB{ /**此对象在被销毁(GC)之前会执行此方法*/ @Override protected void finalize() throws Throwable { System.out.println("finalize()"); }}public class原创 2020-06-01 17:24:06 · 351 阅读 · 1 评论 -
Java性能优化之JVM GC
JVM GC回收哪个区域内的垃圾?只回收堆区和方法区。栈区的数据,在超出作用域后会被JVM自动释放掉,不在JVM GC的管理范围内。JVM GC怎么判断对象可以被回收了?· 对象没有引用· 作用域发生未捕获异常· 程序在作用域正常执行完毕· 程序执行了System.exit()· 程序发生意外终止(被杀线程等)有时候可以将相关的对象设置成null来试图显式地清楚缓存,但是并不是设置为null就一定会被标记为可回收,有可能会发生逃逸。而,JVM GC什么时候执行?eden区空间不够存原创 2020-07-02 18:47:07 · 87 阅读 · 0 评论