java堆
java堆是垃圾收集器管理的内存区域,大小可以扩展,通过参数-Xmx -Xms设定
-Xmx指最大堆大小。
-Xms指最小堆大小,也就是初始化的大小。
方法区
方法去中存储常量、静态变量
运行时常量池中存储字段、方法
运行时常量池
运行时常量池在方法区中,同时,在方法区中还有一个与之对应的叫Class文件常量池
他们的区别在于:java并不要求常量一定只在编译期间才能生成,也就是说并非预置入Class文件常量池的内容才能进入运行时常量池(比如String.intern()方法)
总结:
方法区里存储着class文件的信息和运行时常量池,class文件的信息包括类信息和class文件常量池。
运行时常量池里的内容除了是class文件常量池里的内容外,还将class文件常量池里的符号引用转变为直接引用,而且运行时常量池里的内容是能动态添加的。例如调用String的intern方法就能将string的值添加到String常量池中,这里String常量池是包含在运行时常量池里的。