JDK1.8之前

JVM1.8之前主要由五个部分组成:

  1. 线程共享

    1. 堆:主要存储实例对象,GC的主要活动区域。
    2. 方法区:主要存储类的原始信息,静态方法,类,属性,运行时常量池,即时编译,常量等信息
  2. 线程私有
    1. 程序计数器:指向当前线程正在执行的字节码的地址和行号,线程抢夺CPU时间片的现场。
    2. 虚拟机栈:里边包含多个栈帧,每个栈帧就是一个方法,栈帧记录着{局部变量表、方法出口、操作数栈}
    3. 本地方法栈:JVM调用本地方法

附图:

jdk1.8之前,JVM结构图

JDK1.8及之后

Jdk1.8之后去除了方法区,增加了元数据区,只存储类的原始信息,常量池等移动到堆中了。

原因如下:

  1. 字符串存在永久代中,容易出现性能问题和内存溢出。
  2. 类及方法的信息等比较难确定其大小,因此对于永久代的大小指定比较困难,太小容易出现永久代溢出,太大则容易导致老年代溢出。
  3. 永久代会为 GC 带来不必要的复杂度,并且回收效率偏低。
  4. 多个JVM可以共用一份相同的类信息。

附图:

JDK1.8 JVM内存结构

静态方法多次调用内存_JVM内存结构图(1.8之后发生了什么)相关推荐

  1. java jvm 查看内存_JVM内存状况查看方法和分析工具(下)

    从以上信息中可看出JVM堆的配置信息,如NewSize.NewRatio.SurvivorRatio等:JVM堆的使用情况,新生代中的Eden Space.From Space.To Space的使用 ...

  2. java 32位可用内存_JVM内存不要超过32G

    1.将Java Heap Size设置的大于32G会对性能有什么影响? 开门见山的说,结果有几点(这几点其实也是内部关联): 触发JVM的临界值,优化策略Compressed OOPS失效(之前Hea ...

  3. java 内存回收参数_JVM常用参数(内存分配 内存回收日志)(七)

    内存监控 -verbose:gc 测试代码 public static voidmain(String[] args){ List classes=new ArrayList();int count= ...

  4. 元空间和直接内存_JVM探秘:Java内存区域

    本系列笔记目前主要基于<深入理解Java虚拟机:JVM高级特性与最佳实践 第2版>,后续还会加入<实战Java虚拟机:JVM故障诊断与性能优化>.<Java性能权威指南& ...

  5. jvm内存模型_JVM内存模型的相关概念

    1.前言 Android的虚拟机是根据移动设备的特点基于Java虚拟机(JVM)改进而来,虽然没有保留规范,但作为Java语言的使用者,了解一下JVM的规范还是有必要的. 2.JVM内存模型 JVM在 ...

  6. java 内存调优_JVM内存模型以及性能调优

    JVM 内存模型 JVM.png 程序计数器 程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器.分支.循环.跳转.异常处理.线程恢复等基础功能都需要依赖这个计数器来完成. ...

  7. 单个对象和多个对象在内存中的结构图

    单个对象在内存中的结构图: 多个对象在内存中的结构图: (注:图片来至http://www.itheima.com/ 视频教程截图,转载请说明出处)

  8. php curl 内存 设置,curl out of memory window下PHP调用curl报内存不够

    本文章来给大家介绍关于在window下PHP调用curl报内存不够(curl out of memory)错误的解决办法,有碰到此类问题的朋友可参考. 今天在调用新浪微博api的时候(官网下载的sdk ...

  9. Memkind 例程1 调用memkind_malloc()分配内存

    例程1 调用memkind_malloc()分配内存 Key: void *memkind_malloc(memkind_t kind, size_t size);   // 用于分配内存,完成后得到 ...

最新文章

  1. windows server 远程桌面安装和配置
  2. Apache 与tomcat实现分布式应用部署
  3. 《深入浅出数据分析》第十三章
  4. 【MFC系列1】之简单Win32程序
  5. 装箱和拆箱、类型比较
  6. 屏幕画线软件ZOOMIT
  7. 【Linux系统】第2节 虚拟机中安装Kali系统
  8. 成都高新南区 高新西区 东部新区 多边形范围点位 AOI 高德
  9. 为什么说“人生苦短,我用Python”?
  10. Rust游戏引擎Bevy初探
  11. 【Linux命令篇】文档笔记
  12. Calculate a+b
  13. XP局域网共享设置图文教程
  14. 民政部:汶川地震救灾困难比较多
  15. 戴维营教育-Swift语言中文教程和配套视频教程更新中
  16. long long int 和 int
  17. JavaScript匿名函数(自调用函数)
  18. 【ceph】AsyncMessenger 通信模块基础--编辑中
  19. transformer机制讲解_从发展历史视角解析Transformer:从全连接CNN到Transformer
  20. kafka receiving network data closing socket

热门文章

  1. 《Python cookbook》笔记二
  2. 阿里天池用Pandas揭秘美国选民的总统喜好附加题
  3. 卷积过滤器的宽度_卷积神经网络简析
  4. Jupyter notebook最简原型界面设计 - ipywidgets与lineup_widget
  5. python︱处理与使用json格式的数据(json/UltraJSON/Demjson)、pickle模块、yaml模块
  6. python︱Python进程、线程、协程详解、运行性能、效率(tqdm)
  7. Centos7安装NVIDIA的驱动的坑
  8. 文本预处理及keras的学习
  9. RedHat Enterprise Linux 5下安装firefox
  10. 文档内容结构化技术探索