对HotsPot虚拟机而言
方法区和永久代:方法区是jvm内存模型的逻辑概念,永久代是方法区的物理实现。
永久代:永久代是方法区的实现,1.8前永久代存放在堆空间中,
元空间:1.8之后永久代移除,元空间的功能和永久代类似,但是元空间使用的是本地内存,直接受到本机的物理内存限制。
(静态变量、字符串常量逻辑上属于方法区,但在物理实现上,在1.6及前两者是存放在永久代中,1.7以后就存放在堆空间中,即便1.8后元空间完全替代了永久代,两者仍然存放在堆空间中,但是逻辑上静态变量、字符串常量两者仍然属于方法区。)
| jdk版本 | 两者存放物理位置 | 两者的逻辑位置 |
|---|---|---|
| 1.6及以前 | 永久代 | 方法区 |
| 1.7 | 堆空间 | 方法区 |
| 1.8 | 堆空间 | 方法区 |
移除永久代原因:表面上看是为了避免OOM异常,更深层的原因还是要合并HotSpot和JRockit的代码,
版权声明:本文为weixin_44794112原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。