一个例子理解逃逸分析。

2018-09-22  本文已影响47人  铁拳阿牛

文前你需要准备的功底技术功底。
jstat 输出信息的解读
逃逸分析 的基本概念。
new 的时候确实有做逃逸分析,而不是书上的概念。

/**
 *
 * 运行代码输入下面的命令观察jvm 信息
 * jstat -gcnew `jps -l | grep "TestAnalysis" | awk  -F ' '  '{print $1}'` 1000
 * jstat -gcutil `jps -l | grep "TestAnalysis" | awk  -F ' '  '{print $1}'` 1000
 * @Author: 铁拳阿牛
 * @Date: 2018/9/22 上午8:48
 * @Version 1.0
 */
public class TestAnalysis {
    private static int LENGTH = 100000000;
    public static void main(String[] args) throws Exception {
        for(int i = 0  ; i < 100 ; i++){
            newObject();
            System.out.println("次数" + i);
            Thread.sleep(1000);
        }
    }

    public static void newObject(){
        for(int i = 0 ; i < LENGTH ;i++){
            //new 了是在堆里还是在栈上?执行上👆面命令查看
            Node node = new Node(i);
        }

    }


    //POJO 不用看这里
    static class Node {

        private int valuel;

        private TestGC.Node node;

        public Node(int valuel) {
            this.valuel = valuel;
        }

        public Node(int valuel, TestGC.Node node) {
            this.valuel = valuel;
            this.node = node;
        }

        public int getValuel() {
            return valuel;
        }

        public void setValuel(int valuel) {
            this.valuel = valuel;
        }

        public TestGC.Node getNode() {
            return node;
        }

        public void setNode(TestGC.Node node) {
            this.node = node;
        }
    }

}


上一篇 下一篇

猜你喜欢

热点阅读