理一理Java中的内存模型区分

Java内存模型:

JVM 内存区域主要分为线程私有区域、线程共享区域【JAVA 堆、方法区】、直接内存
线程私有区域:程序计数器、虚拟机栈、本地方法区
线程共享区域:JAVA 堆、方法区
直接内存:不熟JVM GC管理

程序计数器

  • 指向虚拟机字节码指令的位置
  • 唯一一个没有OOM(内存泄露的区域)

虚拟机栈

  • 和线程的生命周期相同
  • 一个线程中每调用一个方法则创建一个栈帧
  • 会出现两种异常:一种是线程请求的栈深度大于JVM所允许的深度深度,栈溢出;一种是若JVM允许动态扩展,若无法申请到足够的内存,内存泄露OOM
  • 栈帧的结构:本地变量表,操作数栈,对运行时常量池的引用

本地方法区

  • 会出现两种异常:一种是线程请求的栈深度大于JVM所允许的深度深度,栈溢出;一种是若JVM允许动态扩展,若无法申请到足够的内存,内存泄露OOM
  • 为Native 方法服务

JAVA 堆

  • 创建的对象和数组都保存在java堆内存中,也是垃圾收集器进行垃圾收集的重要区域
  • 从GC的角度分级可以分为:新生代(1/3堆空间)和老年代(2/3堆空间)
  • 新生代:Eden区(8/10新生代的空间),Survivor From区(1/10新生代的空间),Survivor To区(1/10新生代的空间)

方法区、永久代

  • 运行是常量池
  • 存储被JVM加载的类信息,常量,静态变量,即编译后的代码等数据
  • 永久代的垃圾回收主要针对的是常量池的回收和类型的卸载
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值