JVM-内存划分

来源:互联网 发布:mac 删除键 编辑:程序博客网 时间:2024/05/23 14:29

JVM内存模型图

JVM内存模型图

JVM虚拟机栈

【概念】

  • 就是我们常说的堆栈的栈(常常把内存粗略的分为堆和栈) 线程私有,生命周期与线程一样

【作用】

  • 存放基本数据类型变量和对象的引用(局部变量表)

【特点】

  • 每个方法执行时产生一个栈帧,方法的执行就是栈针在JVM中出栈入栈的过程
  • 内存的分配和释放速度快
  • JAVA编译器必须知道存储在堆栈内所有数据的确切大小和生命周期,不灵活
  • 栈的大小所需内存在编译时期完成分配,方法运行时期不改变局部变量表大小,四个字节占用一个局部变量空间
  • 栈的大小决定了方法调用的可达深度(递归多少层次,或嵌套调用多少层其他方法,-Xss参数可以设置虚拟机栈大小)

JVM堆

【概念】

  • 对象实例及数组存储位置(优化重点,垃圾回收重点),线程共享

【作用】

  • 存储对象和数据共线程共享

【特点】

  • Java堆可以处于物理上不连续的内存空间中,只要逻辑连续即可
  • 在虚拟机启动时创建,可通过-Xmx和-Xms控制大小
  • 分为新生代和老年代

方法区

【概念】

  • 与堆的作用一样,数据线程共享,存储的内容在永久带中

【作用】

  • 存储类JVM已加载的Class元数据包括类和接口的全限定名,字段,方法的名称和描述
  • 存储常量、静态变量: (基本类型如int,Integer,long等,无小数布尔),(对象类型如String,数组等)

【特点】

  • 常量池:常量池数据编译期被确定,并且在持久带,线程共享,是Class文件中的一部分。存储了类、方法、接口等中的常量,当然也包括字符串常量。
  • 字符串常量池:是常量池中的一部分,存储编译期类中产生的字符串类型数据。(JDK1.7开始已经移动至堆中)
  • 运行时常量池:方法区的一部分,所有线程共享。虚拟机加载Class后把常量池中的数据放入到运行时常量池。

本地方法区

【概念】

  • 和虚拟机栈功能相似,但管理的不是JAVA方法,是本地方法,本地方法是用C实现的

【作用】

  • Object中有众多Native方法,如hashCode()、wait()等

程序计数器

【概念】

  • 记录线程下一个要执行的指令

【作用】

  • 当多线程线程数超过CPU或CPU内核数时,线程间就要轮询抢夺CPU资源。因此每个线程有要有一个独立的程序计数器
  • 如果执行的是JAVA方法,计数器记录正在执行的.class文件字节码行号,如果执行的是native方法,则计数器为空
  • 内存占用比较小,划分在CPU上,程序无法直接操作
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 4个月婴儿积食怎么办 黑色的衣服泛红怎么办 不听劝的人该怎么办 牛仔裙子腰大了怎么办 天猫店铺降权怎么办 淘宝做文胸的标题要怎么办 秋衣弹力衣服松了怎么办 假离婚变成真的怎么办 百家利钱不到账怎么办 皮鞋撑大了怎么办变小 鞋穿着走路掉跟怎么办 浅口帆布鞋大了怎么办 布鞋后鞋跟老掉怎么办 穿坡跟凉鞋容易打滑摔倒怎么办 运动鞋烂了个口怎么办 运动鞋的网烂了怎么办 运动鞋鞋一个一个高一个低怎么办 淘宝预售水果不发货怎么办 淘宝评价忘记晒图了怎么办 参加水果展没有实物怎么办 没做过运营面试怎么办 苹果5s16g内存满了怎么办 618天猫有活动淘宝没有怎么办 天猫国际买到假货怎么办 天猫恶意差评怎么办 天猫删除差评被扣分了怎么办 天猫收到差评怎么办 天猫给差评骚扰怎么办 天猫客户差评怎么办 天猫没法给差评怎么办 天猫上限购一件怎么办 拍下商品不发货怎么办 天猫红包过期了怎么办 买天猫店被中介骗了钱怎么办 速卖通假货纠纷怎么办 天猫新开店被恶意拍下怎么办 新开的天猫店没有生意怎么办 银行的支票丢了怎么办 天猫积分用光了怎么办 淘宝店没有无线流量怎么办 京东卖家不发货怎么办会自动打款