当前位置: 首页 > news >正文

JVM内存模型简述

JVM内存结构

在这里插入图片描述

  • 虚拟机栈: 每个方法会在虚拟机栈中创建一个栈帧,存储这个方法的局部变量表,操作数栈,方法出口等信息。
  • 本地方法栈: 与虚拟机栈类似,只是虚拟机栈执行java方法,本地方法栈执行native方法。
  • 堆内存: 存在对象实例。所有的对象实例和数组都在堆上进行分配,所有线程共享。
  • 程序计数器: 当前线程执行的字节码指令的行号指示器。每个线程都有一个私有的程序计数器,使得在线程切换后线程能恢复正确执行的位置。
  • 元空间: 是对方法区这个概念的实现,存储类的元数据信息,如类的结构信息等等。元空间不在虚拟机中,而是使用本地内存。

jvm 内存结构有哪几种内存溢出的情况?

  • 堆内存溢出:java.lang.OutOfMemoryError:Java heap space。原因是代码中可能存在大对象分配,或者发送内存泄漏,导致多次GC后,还是无法找到一块足够大的内存容纳当前对象。
  • 栈溢出:如果程序不断地递归调用,而没有退出条件,就会导致不断地压栈。类似这种情况,JVM会抛出 StackOverFlowError。如果JVM试图扩展栈空间地时候失败,则会抛出OutOfMemoryError。
  • 元空间溢出:java.lang.OutOfMemoryError: Metaspace。代码非常多或引用的第三方包非常多或通过动态代码生成类加载等方法,导致元空间的内存占用很大。
  • 直接内存溢出:java.lang.OutOfMemoryError: Direct buffer memory。

http://www.mrgr.cn/news/17174.html

相关文章:

  • 【C++篇】~类和对象(上)
  • 浅谈C# 抽象类和抽象方法
  • 捷达千里江山首发亮相,捷达品牌2024成都车展继续宠粉不停
  • 【Android】Material Design编写更好的UI
  • 为什么越来越多的IT青年转行网络安全?
  • 台式机CPU温度90℃以上-排查思路
  • 快速了解Git 文件的四种状态及其操作指令、如何忽略文件
  • 考试知识点查缺补漏
  • docker实战基础四
  • codetest
  • 【5G PHY】5G循环前缀(CP)设计思路简述
  • 145. 利用 Redis Bitmap实践: 用户签到统计
  • World of Warcraft [CLASSIC][80][Grandel] Call to Arms: Arathi Basin
  • vue3+elementplus的表格展示和分页实战
  • 【Kubernetes知识点问答题】Kubernetes 部署(一)
  • 小柴带你学AutoSar系列三、标准和规范篇(3)ModeManagement
  • 存储系统总结
  • 如何安装Docker
  • 【MySQL进阶】索引性能分析
  • 探讨抗晃电应用技术在煤化工生产中的运用