美文网首页
jvm(2)-堆、栈、方法区

jvm(2)-堆、栈、方法区

作者: StayHungriest | 来源:发表于2020-03-12 16:10 被阅读0次

一、联系

堆解决数据存储。
栈解决程序运行,如何处理数据。
方法区是辅助堆栈的快永久区(类信息、静态信息都存放于方法区中)。

二、辨清java堆

1. java堆完全是自动化管理,通过垃圾回收机制,垃圾对象会自动清理,不需要显示地释放。
2. 根据垃圾回收机制不同,java堆有可能拥有不同的结构。最为常见的就是将整个java堆分为新生代和老年代。
3. 新生代又分为eden区、s0区、s1区。eden又称伊甸园,新对象一来存放于此。s0与s1大小相等,是相互转换角色的空间,并且s0有对象则s1无对象,相反s1有对象则s0无对象。
4. 每经过一次新生代回收,如果对象还存活,则会进入s0或者s1,之后每一次新生代回收(GC操作),如果对象存活则它的年龄就加1,一定年龄后进入老年代。
5. 复制算法

三、栈

1. 栈是一块线程私有的内存空间。
2. 一个栈,一般由三部分组成:局部变量表、操作数栈和帧数据区。

(1) 局部变量表:用于报错函数的参数及局部变量
(2) 操作数栈:保存计算中间结果,同时作为计算过程中变量临时的存储空间。
(3) 帧数据区:保存常量池指针,还必须有一个异常处理表,方便发送异常时找到异常代码。

四、方法区

1. 所有线程共享的内存区域,保存类信息、静态变量、静态数据,常量池等。
2. 方法区大小决定系统可以保存多少类,类太多,可能导致方法区溢出(jvm抛出内存溢出错误)。方法区可以理解为永久区。

相关文章

  • Java大佬之学习历程(一)

    基础篇 JVM: ①JVM内存结构: 堆、栈、方法区、直接内存、堆和栈区别, ②JVM参数及...

  • 提升目录

    let's begin! 一、基础篇 JVM 1、JVM内存结构 2、堆、栈、方法区、直接内存、堆和栈区别 3、J...

  • JVM内存分配-03-01

    JVM主要内存区域有堆、栈、方法区(非堆)。 堆:对象栈:方法,局部变量,对象引用方法区:静态属性,常量,代码块 ...

  • JVM 基础

    1. JDK、JRE、JVM关系 2. JVM内存模型 程序计数器 虚拟机栈 本地方法栈 Java 堆 方法区 运...

  • JVM内存详解--堆和栈

    JVM内存组成结构 JVM栈由堆、栈、本地方法栈、方法区等部分组成 1)堆 所有通过new创建的对象的内存都在堆中...

  • Java工程师成神之路

    一、基础篇JVM JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别 https://blog.csdn.net...

  • Java内存模型

    1、jvm内存模型分为几部分 程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区 2、jvm内存模型各个...

  • JVM相关笔记

    JVM内存模型 JVM主要由堆内存,方法区,程序计数器,虚拟机栈,本地方法栈组成,其中对堆内存和方法区是线程共有的...

  • 第1篇 JVM相关

    JVM 堆、栈区、本地内存 JVM内存 线程共享区 JAVA堆 方法区,如果耗尽会抛出OOM异常Out of Me...

  • 04-从零玩转JavaWeb-JVM内存划分

    JVM内存划分栈与栈帧 JVM将内存主要划分为:方法区虚拟机栈本地方法栈堆程序计数器 一、方法区 二、虚拟机栈 三...

网友评论

      本文标题:jvm(2)-堆、栈、方法区

      本文链接:https://www.haomeiwen.com/subject/xwjyjhtx.html