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