1、Method Area 方法区
方法区是被所有的线程共享,所有字段和方法字节码,以及一些特殊方法如构造函数,接口代码也在此定义。简单说,所有定义的方法的信息都保存在该区域,此区属于共享区间。
静态变量+常量+类信息(构造方法/接口定义)+运行时常量池存在方法区中,但是实例变量存在堆内存中,和方法区无关。
1 public class Car { 2 3 private String name; 4 5 private static String color; 6 7 private final static String CAR_NUMBER="123456"; 8 9 public Car(){} 10 11 public void getCar(){ 12 13 } 14 }
其中的class Car就类似一个模板信息,所有new Car的信息都是来自这个模板,即其中的静态变量,常量,类信息,常量池等公用的相关信息都会存放在方法区里面共用。