jvmJava虚拟机

1.JVM运行机制的整体脉络

2019-07-28  本文已影响0人  进读万卷书

JVM系列

1.JVM运行机制的整体脉络
2.JVM的分代模型及对象流动
3.常见的垃圾回收器及算法
4.ParNew和CMS的工作原理

1.JAVA代码是怎么运行?

实例代码,创建一个Test类 ,如下:

public class Test {
  public static void main(String[] args) {
   system.out.println("hello world!");
  }
}

要运行代码经过的流程:Test.java编译->Test.class->类加载器->JVM->代码执行。如下图1-1:

1-1.png
2.类是如何加载,何时加载?
public class Test {
  public static void main(String[] args) {
     User user = new User();
     system.out.println("hello world!");
  }
}

public class User {
    String name;
    //set get方法省略
}

程序启动的时候会去加载带main方法的Test.class,当执行main方法,发现需要用到User.class,然后就去加载。所以当用到的时候才会加载一个类,如下图1-2:

1-2.png
3.关于验证,准备,解析,初始化
4.类的加载机制?
5.JVM有哪些内存区域,都有什么用?
public class Test {
  public static void main(String[] args) {
     User user = new User();
     system.out.println("hello world!");
  }
}

public class User {
    String name;
    //set get方法省略
}
1-5.png
6.为什么会有垃圾回收机制?

如上面的图片,JVM的内存是有限的,程序一直在运行,那么当一个方法执行完成后会怎样?方法会出栈,直接释放内存。但是方法执行期间创建的对象怎么办,现在没有引用它,但它还占用着内存。当越来越多的对象创建,内存很快就不够,那么这时个就需要一个办法把没用的对象清空,释放内存。垃圾回收器就是干这个事情的。当达到一定条件时,会触发垃圾回收。如下图1-6:

1-6.png
上一篇下一篇

猜你喜欢

热点阅读