【JVM】Java堆内存的新生代和老年代
- edn区、s0、s1都属于
新生代
,tentired属于老年代
。s指survivor。 - 对象会在eden区分配内存,在经历一次
新生代垃圾回收
后,如果对象还存活,则进入s0或者s1,并且对象的年龄会加1
。当年龄增加到一定程度(默认15岁
,可以通过-XX:MaxTenuringThreshold
),就会被晋升到老年代。 大对象
和长期存活
的对象直接进入老年代。
- Java8之后,将最初的永久代取消,由
元空间
取代。 - 元空间(Java8)与永久代(Java7)的区别在于:永久代使用的
JVM的堆内存
,但是元空间并不在虚拟机中而是使用本机物理内存
。
- 新生代默认占堆内存的1/3,老年代默认占堆内存的2/3。
- Java8中,元空间也在堆中。
通过程序获取堆内存大小
public class HelloGC {public static void main(String[] args) throws InterruptedException {// System.out.println("*********HelloGC********");
// Thread.sleep(Integer.MAX_VALUE);// 获取cpu核心数System.out.println(Runtime.getRuntime().availableProcessors());// 返回Java虚拟机中的内存总量,约等于真实物理内存的1/16long totalMemory = Runtime.getRuntime().totalMemory();// 返回Java虚拟机试图使用的最大内存量,约等于真实物理内存的1/4long maxMemory = Runtime.getRuntime().maxMemory();System.out.println("TOTAL_MEMORY(-Xms) = "+totalMemory+"(字节)、"+(totalMemory/(double)1024/1024)+"MB");System.out.println("MAX_MEMORY(-Xmx) = "+maxMemory+"(字节)、"+(maxMemory/(double)1024/1024)+"MB");}
}
新生代GC和老年代GC区别
- 新生代GC(Minor GC):非常频繁,回收速度较
快
- 老年代GC(Major GC/ Full GC):出现了老年代GC,
至少会发生一次
新生代GC(并非绝对)、回收速度比新生代GC慢
10倍以上。
Minor GC的过程
参考资料
1.JavaGuide公众号文章
2.尚硅谷Java大厂面试题全集(java面试,周阳主讲)-Java面试_大厂高频面试题_阳哥
【JVM】Java堆内存的新生代和老年代相关推荐
- JVM堆内存(新生代,老年代,Xms,Xmx)学习整理
JVM堆内存 jvm堆内存主要分为新生代和老年代,当垃圾收集器触发GC的时候会对堆内存长时间没用的对象分代进行回收,新生代和老年代内存占比为1:2. 文章目录 JVM堆内存 新生代 1.Eden区 2 ...
- jvm对象从新生代到老年代_JVM内存管理、JVM垃圾回收机制、新生代、老年代以及永久代...
内存模型 JVM运行时数据区由程序计数器.堆.虚拟机栈.本地方法栈.方法区部分组成,结构图如下所示. JVM内存结构由程序计数器.堆.栈.本地方法栈.方法区等部分组成,结构图如下所示: 1)程序计数器 ...
- java堆内存_java堆内存详解
http://www.importnew.com/14630.html java堆的特点 <深入理解java虚拟机>是什么描述java堆的 Java堆(Java Heap)是java虚拟机 ...
- [JVM] java虚拟机内存管理机制及垃圾收集
Table of Contents 虚拟机内存结构详解 程序计数器 虚拟机栈 JVM stack 本地方法栈 native method stack 常量池 堆 heap 方法区 method are ...
- 1、虚拟机内存管理、运行时数据区、线程共享区、Java堆、新生代、老年代、Eden区域分配、方法区、线程独占区、虚拟机栈
1.Java虚拟机内存管理 1.1.运行时数据区[Runtime Data Area] 1.1.1.线程共享区 1.1.1.1.Java堆[heap] 1.1.1.1.1.新生代.老年代.Eden区域 ...
- jvm对象从新生代到老年代_深入理解jvm内存模型以及gc原理
整体架构 Jvm = 类加载器 + 执行引擎 + 运行时数据区域 类加载器 ● 作用 类加载器是将编译好的class文件加载到内存中,并进行验证.初始化等步骤,形成能被jvm直接使用的类型. ● 加载 ...
- Java基础之jvm,堆的分类新生代、老生代和永久代详解
JVM是Java Virtual Machine(Java虚拟机),是一种用于计算设备的规范,一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的. 引入Java语言虚拟机后,J ...
- java 堆中的永久代_JVM中的堆的新生代、老年代、永久代详解
JVM中的堆一般分为三大部分:新生代.老年代.永久代,其大致的占比如下: 一.新生代 新生代主要用来存放新生的对象.一般占据堆空间的1/3.在新生代中,保存着大量的刚刚创建的对象,但是大部分的对象都是 ...
- Java当中jvm运行时区域新生代、老年代、永久代和Garbage Collection垃圾回收机制【杭州多测师】【杭州多测师_王sir】...
1.本地方法栈和程序计数器 ==>偏底层一般不会接触到 2.方法区 ==>对应为永久代 3.虚拟机栈(stack) ==>对应为栈 4.堆(heap) ==>对应里面有新生代+ ...
最新文章
- 用Spark机器学习数据流水线进行广告检测
- C ++定义QML类型
- ubuntu16.04/20.04 xfce4下面使用护眼软件redshift
- c语言之多线程函数,如何用C语言实现多线程
- Linux下查看软件安装路径(whereis)
- 洛谷 P1162 填涂颜色题解
- 报表中表达式的全局集合(Visual Studio 报表设计器)
- linux内核长期支持版本,Linux Kernel 3.12长期支持分支迎来第63个维护版本
- IPv6-IPv4过渡技术详解及配置实例
- 基于 React.js + redux + bootstrap 的 RubyChina 示例
- Shiro Subject详解
- linux打开九针串口,RS232 9针串口定义
- Adobe Photoshop CC 2019 精简版
- 光伏扶贫项目指标下达 如何严把光伏质量关?
- BeautifulSoup使用
- Linux 腾讯云服务器账户创建流程
- 自然语言处理之-----Word2Vec
- 鼠标放在图片上,出来小tips
- You have new mail in /var/spool/mail/root
- 使用poi 创建Excel 保存到本地并下载