一个例子理解逃逸分析。

文前你需要准备的功底技术功底。
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;
        }
    }

}


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容