jvm内存笔记

目录

一:non-heap

二:heap


美图说个**,先上图:

如上图所示嘛:
           //2019年3月27日更正。JVM stack 翻译错误,是虚拟机栈。

 首先嘛JVM内存区分为堆heap(上图白色区域)、非堆non-heap(上图蓝色区域)。

堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给 自己用的,

  • 一:non-heap

  1. 非堆中的方法区 Method Area (也称永久带)是用来存放类信息、常量、静态变量的。这个内存区可以用上图中橘黄色的参数进行配置;方法区中有一个常量池:用于存放各种符号引用;
  2. 虚拟机栈用于存放局部变量表(基本数据类型、对象引用等)、操作栈、方法出口;
  3. 本地方法栈与虚拟机栈基本类似,区别在于虚拟机栈为虚拟机执行的java方法服务,而本地方法栈则是为Native方法服务;
  4. 程序计数器用来记录程序下一条指令。

  • 二:heap

1:堆内存用来存放对象实例和数组(所有new对象),这里可以通过上面的橘黄色的参数配置大小;

2:堆内存分为两部分:

      a:年轻代Young;年轻代是用来存放刚创建的对象,可以使用上图中的橘黄色参数配置大小;

      b:老年代Old;老年代是用来存放大对象或者已经存活了很久的对象;

3:其中年轻代又分为三部分:

      a:Eden;

      b:From Survivor;

      c:To Survivor;

主要使用复制清除算法,在Eden内存块和其中一个Survivor把需要保存的数据移到另一个Survivor,下次继续反复,直到15次之后便更新到老年代中,执行一次GC,命名为 Minor GC。其中老年代称为Full GC。

 

参考链接:Java虚拟机的内存组成以及堆内存介绍

                  Xms Xmx PermSize MaxPermSize 区别

                  Java JVM 8-java堆新生代,老年代的划分及回收算法

                  Java 新生代、老年代、持久代、元空间

                  补充链接:https://mp.weixin.qq.com/s/lryDeCfiacRxCMpzEmyoLA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值