java堆内存和栈内存的区别
一段时间之前,我写了两篇文章文章分别是Java的垃圾回收和Java的值传递,从那之后我收到了很多要求解释Java堆内存和栈内存的邮件,并且要求解释他们的异同点。
在Java中你会看到很多堆和栈内存的引用,JavaEE书和文章很难在程序的角度完全解释什么是堆什么是栈。
总结:
1 栈:为编译器自动分配和释放,如函数参数、局部变量、临时变量等等
2 堆:为成员分配和释放,由程序员自己申请、自己释放。否则发生内存泄露。典型为使用new申请的堆内容。
除了这两部分,还有一部分是:
3 静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。
Java堆内存
Java栈内存
- package com.journaldev.test;
- public class Memory {
- public static void main(String[] args) { // Line 1
- int i=1; // Line 2
- Object obj = new Object(); // Line 3
- Memory mem = new Memory(); // Line 4
- mem.foo(obj); // Line 5
- } // Line 9
- private void foo(Object param) { // Line 6
- String str = param.toString(); Line 7
- System.out.println(str);
- } // Line 8
- }
下边的图片展示了上边程序堆和栈内存的引用,并且是怎么用来存储原始值、对象和变量的引用。
![](/assets/blank.gif)
堆内存和栈内存的区别
原文地址:http://www.journaldev.com/4098/java-heap-memory-vs-stack-memory-difference
java堆内存和栈内存的区别相关推荐
- 简述JAVA中堆内存与栈内存的区别
Java把内存划分成两种:一种是栈内存,一种是堆内存. 一.栈内存 存放基本类型的变量,对象的引用和方法调用,遵循先入后出的原则. 栈内存在函数中定义的"一些基本类型的变量和对象的引用变量& ...
- java 堆内存和栈内存的区别_java中栈内存和堆内存有什么区别
栈内存和堆内存的区别: 1.栈内存用来存放基本类型的变量和引用变量,堆内存用来存储java中的对象,无论是成员变量,局部变量,还是类变量,他们指向的对象都存储在堆内存中. (视频教程推荐:java视频 ...
- Java的堆内存和栈内存
一.Java的堆内存和栈内存 Java把内存划分成两种:一种是堆内存,一种是栈内存. 堆:主要用于存储实例化的对象,数组.由JVM动态分配内存空间.一个JVM只有一个堆内存,线程是可以共享数据的. 栈 ...
- Java中的堆内存、栈内存和方法区总结
Java中内存分成两种,一种叫做栈内存,一种叫做堆内存.还有一个方法区,也叫做静态区. 1.栈内存中放哪些东西? ①基本类型的变量,例如int a=3中的a: ②对象的引用变量,例如Thread ...
- Java 堆内存和栈内存
在Java中,内存:栈内存.堆内存. 1 栈内存 栈内存主要是用来执行程序用的,比如:基本类型的变量和对象的引用变量 栈溢出(StackOverflowError) 递归溢出 2 堆内存 堆内存作用是 ...
- python变量存储 堆与栈内存内存_浅析JS中的堆内存与栈内存
最近跟着组里的大佬面试碰到这么一个问题, Q:说说var.let.const的区别 A:balabalabalabla... Q:const定义的值能改么? A:你逗我?不能吧 不知道各位看官怎么想? ...
- js中的堆内存和栈内存
转自:https://www.cnblogs.com/heioray/p/9487093.html 浅析JS中的堆内存与栈内存 最近跟着组里的大佬面试碰到这么一个问题, Q:说说var.let.con ...
- 栈和堆存储在计算机RAM中,堆内存和栈内存及C++内存分配
1.现代操作系统内存管理主流的操作系统(Windows,Linux)都采用虚拟内存管理的方式,具体说就是:页式管理.段式管理.段页式管理. 操作系统分配资源的单位是进程,所以,内存管理的过程也是以进程 ...
- java动态扩展_java栈内存动态扩展要怎么理解?要如何实现?
小伙伴们知道如何在java栈中内存动态扩展吗?这是虚拟机中的一个概念,下面让我们一起来看看该如何实现吧. 一.内存概念 在java中,我们一般会简单把java内存区域划为两种:堆内存与栈内存.其实这种 ...
最新文章
- 使用AIO软件清除日志
- 关于源代码管理的10 个问题
- 你不知道的vscode之空间控制
- 在Linux中GNU的名词解释,GNU在GNU / Linux操作系统中的主要贡献是什么...
- python 网络渗透_python 网络编程(渗透与编程一)
- 华为P40pro 手机云台_国产新旗舰华为P40Pro喜欢这款手机吗?
- [Misc]IE浏览器真正全屏幕操作技巧
- 对手机彩铃的一些想法
- C/C++[codeup 2018]数列
- postgres常用SQL
- android模拟器如何增加RAM
- C语言实现格林威治时间转北京时间+根据日期计算星期几
- 如何优雅的美化kali,实现双桌面环境
- 论单片机IO引脚驱动能力的提高
- python选题背景_论文的选题背景及意义-样例
- 当前电子计算机发展的局限性,当前高中信息技术教学现状及教学改革探究
- C# DirectoryInfo GetFiles()获得的文件列表与本机下文件顺序一致
- 电磁场与电磁波:法拉第电磁感应定律,高斯定律的高斯定律
- hive server2源码地址在哪_实战搭建Thinkphp二次开发威客RW平台源码粉丝关注投票发布系统...
- Outlook 2003中的IMAP与POP3
热门文章
- j-甜甜圈(第十三届icpc河南省赛)
- Java 实现文档在线预览功能
- vue 本地xlsx文件下载_vue前端项目中excel文件下载
- 问遍了身边的面试官朋友,我整理出这份 Java 集合高频面试题(2022年最新版)
- android service白名单,Android 后台运行白名单实现保活
- 计算机的优势和劣势_计算机二级证书的含金量不高?别小瞧,这4大优势用处不小...
- 元气骑士 自建服务器,七夕元气骑士联机盒子服务器官方版
- Vuex状态管理-mapState的基本用法详细介绍
- MongoDB备份/恢复方案
- 成为计算几何master之路——记算法竞赛中常用的计几算法及思想