java的内存分布

java的内存划分为5个部分:

  • 栈(stack):描述的是JAVA方法执行的内存模型:每个方法被执行的时候会创建一个栈帧,用于存储局部变量表、操作栈、动态链接、方法出口等信息。存放的都是方法中的局部变量。方法的运行一定是在栈中运行 .线程私有.
    局部变量:方法的参数或者是方法{}内部的变量,有作用域,一旦超出作用域,立刻从栈内存中消失
    在这里插入图片描述

  • (Heap):存放实例对象 ,运行时动态分配内存

    • 凡是new出来的东西,都在堆当中。所有的实例对象和数组都要在堆上分配
    • 堆内存里面的东西都有一个地址值(16进制)。
    • 堆内存里面的数据,都有默认值.
    • 线程共享的一块区域,在java虚拟机启动时创建.
    • 垃圾收集器管理的主要区域
    • 可以处于物理上不连续的内存空间,只要是逻辑上连续的即可
    • 堆中数据必须包含能查找到此对象类型数据(对象类型、父类、实现的接口、方法)等的地址信息,这些数据存储在方法区。所以使用对象.getClass()就可以得到该类的Class对象
  • 方法区(Method Area):存储.class相关信息,方括方法的信息

    • 各个线程共享的内存区域
    • 存储已被虚拟机加载的类信息、常量、静态变量
      在这里插入图片描述
  • 本地方法栈:与操作系统相关

  • 程序计数器:与CPU相关。作用为当前线程所执行的字节码的行号指示器。线程私有。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值