栈空间内存和堆空间内存
栈空间内存、堆空间内存和方法区内存
在学习Java的过程中,我们知道,我们编译出的class文件,需要加载到内存中才可以运行。在Java中,有三个很重要的内存空间:栈内存空间、堆内存空间以及方法区内存空间。今天,我就来谈一下我对于这三个内存空间的一些理解吧。
首先,我们先来讲一下,什么是栈内存空间、堆内存空间、方法区内存空间。
栈内存空间:
栈是一种数据结构,特点是后进先出,意思是最后进入的数据会最先被读取。在栈内存空间中,存储的是方法以及局部变量。当方法被执行时,栈内存空间中就会为其分配内存,此时方法就会进入栈空间执行,称为压栈。当方法执行结束后,就会释放空间,称为弹栈,此时方法就会退出栈内存空间。方法一定是压栈和弹栈!
堆内存空间
堆内存空间是一块比栈内存空间大得多的空间,主要用于储存java程序中产生的对象。比如在程序中遇到new关键字,就会产生一个对象实例,这个对象实例会被存储在堆内存空间中。
方法区内存空间
方法区内存空间中保存的是代码片段、常量以及static修饰的变量。在jdk1.7以前,方法区内存空间中还存在一个常量池来储存常量(其中包含了String),在jdk1.8以后,常量池从方法区中移除,在堆区增加了元数据空间。
实例
代码
public class Test
{public static void main(String[] args){Test res = new Test();res.test();}public void test(){int a = 10;System.out.println(a);}
}
内存区示意图
栈内存空间中所有方法执行结束后,都会弹栈,释放内存。
栈空间内存和堆空间内存相关推荐
- java堆内存和堆外内存_Java堆空间,本机堆和内存问题
java堆内存和堆外内存 最近,我正在和一个朋友讨论为什么Java进程使用的内存比启动Java进程时设置的最大堆多. 代码创建的所有Java对象都是在Java堆空间内创建的,其大小由-Xmx选项定义. ...
- 浅谈Java堆内内存、堆外内存、直接内存、用户空间和内核空间
我们都知道Java中大多数的对象都存在于堆内存中,那什么是堆外内存.直接内存?它们又分别用来做什么?分布在用户空间还是内核空间? 首先,有个前置知识点,所谓的Java程序,其实可以理解为是用C/C++ ...
- Java堆外内存:堆外内存溢出问题排查
一.堆外内存组成 通常JVM的参数我们会配置 -Xms 堆初始内存 -Xmx 堆最大内存 -XX:+UseG1GC/CMS 垃圾回收器 -XX:+DisableExplicitGC 禁止显示GC ...
- java nio 堆外内存_Java堆外内存之突破JVM枷锁
对于有Java开发经验的朋友都知道,Java中不需要手动的申请和释放内存,JVM会自动进行垃圾回收:而使用的内存是由JVM控制的. 那么,什么时机会进行垃圾回收,如何避免过度频繁的垃圾回收?如果JVM ...
- java堆外内存6_Java 堆外内存的使用
更多 Java 虚拟机方面的文章,请参见文集<Java 虚拟机> 为什么需要使用堆外内存 将长期存活的对象(如 Local Cache )移入堆外内存( off-heap,又名直接内存 d ...
- 19.jvm内存结构部分——堆_内存诊断_jmap
接下来我们给大家介绍一下堆内存的一个诊断. 这里主要先介绍一些堆内存诊断相关的一些工具. 我们接下来会掌握这样几个工具啊, 第一个叫 jps 的工具,它是查看当前系统中有哪些java 进程,并且把它们 ...
- Java堆内内存和堆外内存
1.堆内内存概念 堆内一般指堆内内存,英文全称:on-heap memory (heap:堆,java的内存区) java虚拟机分配非空对象一般就放到堆内内存,并且虚拟机会定期会进行垃圾回收在某些特定 ...
- 堆外内存与堆内内存详解
堆外内存一直是Java业务开发人员难以企及的隐藏领域,究竟他是干什么的,以及如何更好的使用呢?那就请跟着我进入这个世界吧. 一.什么是堆外内存 1.堆内内存(on-heap memory)回顾 堆外内 ...
- JVM学习笔记之-堆,年轻代与老年代,对象分配过程,Minor GC、Major GC、Full GC,堆内存大小与OOM,堆空间分代,内存分配策略,对象分配内存,小结堆空间,逃逸分析,常用调优工具
堆的核心概述 概述 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域.Java堆区在JVM 启动的时候即被创建,其空间大小也就确定了.是JVM管理的最大一块内存空间. 堆内存的大小是可 ...
最新文章
- 用 Python 详解《英雄联盟》游戏取胜的重要因素!
- 科技公司高管职位知多少?(转)
- NT式驱动和WDM式驱动程序
- 计算机网络高分笔记视频,计算机网络高分笔记(整理).pdf
- 了解linux内核必读的5本书
- springmvc的原理架构,Struts2运行原理,springmvc和Struts2的区别
- DLL 的导入与导出
- 游戏AI探索之旅:从AlphaGo到MOBA游戏
- java 内存数据库 sql_ssm+redis +Maven用于内存数据库 (No Sql)入门demo
- python使用pip安装_Python | 如何用pip安装模块和包
- MFC开发IM-第八篇、调整各个控件的上下tab顺序
- 前端有未来吗?听我娓娓道来!
- (转)invalidate()和postInvalidate() 的区别及使用
- python小爬虫,爬取文章(知乎专栏)片段
- ENVI5.3下载与安装
- 回文字符串判断python实现
- [RK3566] 通过GM8775 点LVDS屏调试记录
- 计算机上没有端口DOT4,dot4_001端口
- 2019年6月18号 AndroidStudio+夜神模拟器 搭建Xposed环境
- 2016 GDMS全球数字营销峰会在沪胜利召开