Java内存模型的回顾

本篇文章主要讲述了Java内存模型中的程序计数器、虚拟机栈、本地方法栈、元空间与堆,以及堆中的常量池。前面通过javap反编译class文件得到int add(int a, int b)函数的栈帧,主要分析了栈帧中JVM指令对应的局部变量表、操作数栈、程序计数器的状态变化。以及JDK7以后出现了替代永久代的元数据区,并分析了元数据区替换了永久代有哪些好处,主要分析了给字符串常量池带来的影响,并通过代码验证了元数据区相比永久代的优越性。学习了JVM性能调优的三个参数的意义和普通用法,最后探讨了并验证了JDK1.6与JDK1.7+的版本String类的intern方法的不同表现结果,分析了出现不同结果的原因,其实主要是JDK1.6的版本是建立副本再放入字符串常量池,而JDK1.7+版本时直接把堆上的对象的引用入池。





