引言:熟悉Java内存自动分配的机制,就更能掌握垃圾回收器的设计和工作原理。在JDK 8 版本后,JVM内存区域发生了较大的改动。在JDK 8 之前采用永久代来实现方法区,但是永久代的内存分配受制于JVM虚拟机管理的内存区域,在运行时动态大量生成类的情况下,内存容易溢出,所以在JDK 8 以后采用元空间来实现方法区。

一 JDK 6 及之前

*黑色框为线程共享区
*橙色框为线程私有区

此时,方法区存放着类型信息,运行时常量,静态变量,

二 JDK 7

在JDK 7 中,运行时数据区各个区域的划分没有变动,但是方法区中的字符串常量池和静态变量被移到堆中
(注意只是字符串常量池,不是整个运行时常量池。JVM为每个类型维护着一个常量池,字符串常量池只是整个运行时常量池的一部分。)

三 JDK 8

*黑色框为线程共享区
*橙色框为线程私有区

JDK 8 以后内存区域发生了较大的变法,此时的方法区被整个移出JVM管理的区域,采用元空间来实现方法区,元空间只受本地内存大小的限制,可以分配的内存增大,这时候就很难再产生方法区的内存溢出异常。

探究JVM(一)JDK 8 以后内存区域的变化相关推荐

  1. JVM面试题整理-Java内存区域与内存溢出异常、垃圾收集器和内存分配策略

    参考: https://blog.csdn.net/zd836614437/article/details/64126826 https://blog.csdn.net/u011225629/arti ...

  2. 深入理解JVM—第二章:Java内存区域与内存溢出异常

    1,概述 Java较C.C++,Java可以利用虚拟机的自动内存管理机制,避免繁琐的内存分配与回收.不容易出现内存泄漏和内存溢出问题. 内存泄漏:指程序申请到的内存空间不再归还(无法归还),可使用完该 ...

  3. jvm性能调优 - 02JVM中内存区域

    文章目录 Pre 什么是JVM的内存区域划分? 存放类的方法区 执行代码指令用的程序计数器 Java虚拟机栈 Java堆内存 示例演示核心内存区域的全流程 其他内存区域 思考题 Pre 上一篇文章我们 ...

  4. 《深入理解JVM.2nd》笔记(二):Java内存区域与内存溢出异常

    文章目录 概述 运行时数据区域 程序计数器 Java虚拟机栈 本地方法栈 Java堆 方法区 运行时常量池 直接内存 HotSpot虚拟机对象探秘 对象的创建 第一步 第二步 第三步 第四步 最后一脚 ...

  5. JVM实战与原理---内存区域分配

    JVM实战与原理 目录 内存区域分配 1. 程序计数器 2. Java虚拟机栈 3. 本地方法栈 4. 堆 5. 方法区 6. 运行时常量池 内存区域分配 章节目的:明白虚拟机中的内存是如何划分?每块 ...

  6. jvm(2)-java内存区域

    [0]README 0.1)本文转自 深入理解jvm, 旨在学习 java内存区域 的基础知识: [1]运行时数据区域 1)jvm 所管理的内存将会包括以下几个运行时数据区域 1.1)方法区:(线程共 ...

  7. 走进JVM【二】理解JVM内存区域

    引言 对于C++程序员,内存分配与回收的处理一直是令人头疼的问题.Java由于自身的自动内存管理机制,使得管理内存变得非常轻松,不容易出现内存泄漏,溢出的问题. 不容易不代表不会出现问题,一旦内存泄漏 ...

  8. jvm 堆外内存_jvm┃java内存区域,跳槽大厂必会知识点

    正文约: 2000字 预计阅读时间: 6分钟 文章首发于我的微信公众号:哪儿来的moon,欢迎大家关注 目录 目录 前言 正文 1.程序计数器 2.虚拟机栈 3.本地方法栈 4.堆 5.方法区 6.直 ...

  9. Java内存管理:Java内存区域 JVM运行时数据区

    Java内存管理:Java内存区域 JVM运行时数据区 在前面的一些文章了解到javac编译的大体过程.Class文件结构.以及JVM字节码指令. 下面我们详细了解Java内存区域:先说明JVM规范定 ...

最新文章

  1. 嵌入式计算机与pc机架构,PC架构与嵌入式架构的录播主机的区分
  2. jquery实现点击a链接,跳转之后,该a链接处显示背景色
  3. DGL教程【三】构建自己的GNN模块
  4. ExtJs2.0学习系列(15)--extjs换肤
  5. 能使Oracle索引失效的六大限制条件
  6. c语言 10^30,^ 在C语言中是什么意思?
  7. 具体数学-第12课(数论进阶与组合数入门)
  8. 用栈实现队列,实现Enqueue和Dequeue方法
  9. 校园报修管理系统的不足与探讨
  10. python中的snip用法_腾讯mac截图软件Snip使用教程
  11. “你需要TrustedInstaller提供的权限才能对此文件进行更改” 解决方案
  12. 漏洞四处,苹果电脑也不再安全?(转)
  13. MYSQL附近的人设计思路
  14. 笔耕不辍 elementUI el-tree实现懒加载和直接查询实现
  15. Win11电脑的色盲模式如何开启?
  16. 前缀树——以Gin路由为例
  17. linux安装globalsign证书,GlobalSign 普通 OV 代码签名证书提取教程
  18. 大学生web前端期末大作业实例代码 (1500套,建议收藏) HTML+CSS+JS
  19. MySQL数据库基础——数据库基础
  20. (转载)32个Python爬虫项目

热门文章

  1. 从原来的系统中找回网络连接
  2. 通过TCP各个状态,可以排除和定位网络或系统故障
  3. 【Unity3D】3D游戏学习
  4. Python Scrapy 爬虫入门: 爬取豆瓣电影top250
  5. iOS 音视频录制之播放视频,AVPlayer可播放本地视频和在线视频
  6. Sea.js入门教程
  7. 布局云计算的下一个主场,紫光云引领行业云三大趋势
  8. 最新史上最权威的Oracle学习路线视频教程(价值2w)
  9. android nfc读取公交卡信息_手机NFC可以复制小区用的门禁卡吗?
  10. Android 设置壁纸流程