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

面试官:说说JVM内存调优及内存结构

1. JVM简介
  • JVM(Java虚拟机)是运行Java程序的平台,它使得Java能够跨平台运行。
  • JVM负责内存的自动分配和回收,减轻了程序员的负担。
2. JVM内存结构
  • 运行时数据区是JVM中最重要的部分,包含多个内存区域:
    • 程序计数器:线程私有,用于存储当前线程执行的字节码指令地址。
    • Java虚拟机栈:线程私有,存储方法调用时的局部变量和操作数栈。
    • 本地方法栈:线程私有,为本地方法(如C/C++编写的方法)服务。
    • Java堆区:线程共享,存储对象实例。
    • 方法区:线程共享,存储类信息、字段信息、方法信息等。
3. 线程共享与线程私有
  • 线程私有:程序计数器、虚拟机栈、本地方法栈。
  • 线程共享:堆、方法区、堆外内存(如JDK8的元空间)。
4. JVM执行流程
  • Java文件通过类加载器加载到内存,然后由执行引擎执行。
5. 程序计数器
  • 作用:存储当前线程执行的字节码指令地址。
  • 特点:每个线程有自己的程序计数器,不会出现OutOfMemoryError。
6. Java虚拟机栈
  • 内部结构
    • 局部变量表:存放基本数据类型和对象引用。
    • 操作数栈:存放方法执行过程中的中间结果。
    • 动态链接:指向运行时常量池的方法引用。
    • 方法返回地址:存储方法退出时的返回地址。
  • 异常
    • StackOverFlowError:请求的栈深度超过最大深度。
    • OutOfMemoryError:扩展栈时无法申请到足够的内存。
7. 本地方法栈
  • 与Java虚拟机栈类似,但为本地方法服务。
  • 也会出现StackOverFlowError和OutOfMemoryError异常。
8. Java堆区
  • 存储内容:对象实例和数据。
  • 分区
    • 新生代:存放新对象和未达到一定年龄的对象。
    • 老年代:存放长时间使用的对象。
    • 元空间:存储方法中的临时对象(JDK8及以后)。
  • 异常
    • GC Overhead Limit Exceeded:垃圾回收时间过长。
    • Java heap space:创建新对象时堆内存不足。
9. 方法区
  • 存储内容:类信息、字段信息、方法信息、常量、静态变量、编译后的代码缓存。
  • 演进过程
    • JDK 1.6及之前:方法区在永久代。
    • JDK 1.7:逐步“去永久代”,字符串常量池和静态变量移至堆中。
    • JDK 1.8及之后:取消永久代,方法区在元空间和堆中实现。
http://www.lryc.cn/news/408574.html

相关文章:

  • Ansible的脚本-----playbook剧本【下】
  • Mysql开启远程控制简化版,亲测有效
  • 【MQTT协议与IoT通信】MQTT协议的使用和管理
  • 根据题意写出完整的css,html和js代码【购物车模块页面及功能实现】
  • AWS免费层之后:了解和管理您的云服务成本
  • Linux定时同步系统时间到硬件时间
  • 网络编程——wireshark抓包、tcp粘包
  • el-table合计行更新问题
  • ChatGPT:数据库不符合第二范式示例
  • 27、美国国家冰雪中心(NSIDC)海冰密集度月数据下载与处理
  • vite环境下使用bootstrap
  • Laravel视图渲染封装
  • C++学习补充2:MySQL select 查询
  • uni-app声生命周期
  • 排序算法--堆排序
  • iPhone 在 App Store 中推出的 PC 模拟器 UTM SE
  • FastAPI删除mongodb重复数据(数据清洗)
  • 移动UI:排行榜单页面如何设计,从这五点入手,附示例。
  • 如何解决 uni-app 项目中 “文件查找失败:‘crypto-js‘“ 的问题
  • Apache DolphinScheduler 3.2.2 版本正式发布!
  • 汇川CodeSysPLC教程03-2-6 ModBus TCP
  • 【Python机器学习】决策树的构造——划分数据集
  • Pip换源使用帮助
  • 力扣1089复写0
  • 10 VUE Element
  • 独立游戏《星尘异变》UE5 C++程序开发日志8——实现敏感词过滤功能(AC自动机)
  • 使用 Swagger 在 Golang 中进行 API 文档生成
  • Pip换源实战指南:加速你的Python开发
  • 【数据结构】常用数据结构的介绍:理解与应用
  • 【优秀python系统毕设】基于Python flask的气象数据可视化系统设计与实现,有LSTM算法预测气温