美文网首页JavaJava 核心技术
JVM垃圾回收-STW(Stop-The-World)

JVM垃圾回收-STW(Stop-The-World)

作者: 迦叶_金色的人生_荣耀而又辉煌 | 来源:发表于2020-12-13 07:42 被阅读0次

    Stop the World机制:在执行垃圾收集算法时,为了保证正确性,Java应用程序的其他所有除了垃圾收集收集器线程之外的线程都被挂起,它会导致系统全局的停顿。
    注意:市面上所有的垃圾收集器都有Stop-The-World问题,开发中尽量不要调用 System.gc();

    代码演示

    new JaryeThread().start();
    // 下列代码手动gc后,对打印结果的影响
    new Thread(()->{
        ArrayList<byte[]> bytes = new ArrayList<>();
        while(true){
            for(int i=0;i<10;i++){
                bytes.add(new byte[1024*1024*10]);
            }
            if(bytes.size()>20){
                bytes.clear();
                //手动触发GC
                System.gc();
            }
        }
    }).start();
    
    static class JaryeThread extends Thread{
        public long startTime = System.currentTimeMillis();
    
        @Override
        public void run() {
            while (true) {
                try {
                    long end = System.currentTimeMillis() - startTime;
                    System.out.println((end / 1000) + "." + (end % 1000));
                    Thread.sleep(1000);
                } catch (Exception e) {
                }
            }
        }
    }
    没有垃圾回收的响应结果:
    0.0
    1.1
    2.1
    3.1
    4.1
    ……
    有垃圾回收的响应结果:
    0.0
    1.14
    2.19
    3.29
    4.31
    5.34
    6.39
    7.43
    8.44
    9.60
    10.77
    11.93
    12.105
    

    相关文章

      网友评论

        本文标题:JVM垃圾回收-STW(Stop-The-World)

        本文链接:https://www.haomeiwen.com/subject/rzmkgktx.html