JVM分代模型具体是怎样的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1972个文字,预计阅读时间需要8分钟。
前言+上篇文章我们对比了JVM的内存模型,大家对JVM内存模型有了清晰的认识,小伙伴们可以参考JVM内存模型不再神秘。本篇文章我们将针对JVM堆内存的代际模型做一个详细的讲解。
前言
上篇文章我们一起对jvm的内存模型有了比较清晰的认识,小伙伴们可以参考JVM内存模型不再是秘密这篇文章做一个复习。
本篇文章我们将针对jvm堆内存的分代模型做一个详细的解析,和大家一起轻松理解jvm的分代模型。
相信看过其他文章的小伙伴们可能都知道,jvm的分代模型包括:年轻代、老年代、永久代。
那么它们分别代表着什么角色呢?我们先来看一段代码
public class Main { public static void main(String[] args) { while (true){ load(); } } public static void load(){ SysUser sysUser = new SysUser(); sysUser.setAvatar("1"); } }
这段代码本身没有什么特殊的含义,主要是理解jvm的运行机制。
首先一旦执行main()方法,就会把main()方法的栈帧压入main线程的虚拟机栈,然后调用load()方法后,又会把load()方法的栈帧压入虚拟机栈。
接着在执行load()方法时,会在java堆内存中创建一个SysUser对象实例,而栈帧中会有sysUser局部变量引用堆内存中的SysUser对象实例。
如下图:
到这里上篇文章都讲解过,相信大家都能看懂。
本文共计1972个文字,预计阅读时间需要8分钟。
前言+上篇文章我们对比了JVM的内存模型,大家对JVM内存模型有了清晰的认识,小伙伴们可以参考JVM内存模型不再神秘。本篇文章我们将针对JVM堆内存的代际模型做一个详细的讲解。
前言
上篇文章我们一起对jvm的内存模型有了比较清晰的认识,小伙伴们可以参考JVM内存模型不再是秘密这篇文章做一个复习。
本篇文章我们将针对jvm堆内存的分代模型做一个详细的解析,和大家一起轻松理解jvm的分代模型。
相信看过其他文章的小伙伴们可能都知道,jvm的分代模型包括:年轻代、老年代、永久代。
那么它们分别代表着什么角色呢?我们先来看一段代码
public class Main { public static void main(String[] args) { while (true){ load(); } } public static void load(){ SysUser sysUser = new SysUser(); sysUser.setAvatar("1"); } }
这段代码本身没有什么特殊的含义,主要是理解jvm的运行机制。
首先一旦执行main()方法,就会把main()方法的栈帧压入main线程的虚拟机栈,然后调用load()方法后,又会把load()方法的栈帧压入虚拟机栈。
接着在执行load()方法时,会在java堆内存中创建一个SysUser对象实例,而栈帧中会有sysUser局部变量引用堆内存中的SysUser对象实例。
如下图:
到这里上篇文章都讲解过,相信大家都能看懂。

