您的位置:首页 > 编程语言 > Java开发

写一点Java中栈内存(Stack)和堆内存(Heap)的基础知识

2018-03-10 21:01 267 查看
一个Java程序运行时,程序一般会在内存中开辟一些空间供运行,其中分为栈内存和堆内存.

栈内存一般是线程独享的,存放的是一些简单的基本类型,以及方法,对象的地址等.

而堆内存的内容是全局的,存放大部分的引用类型和数据,他是全局共享的,比栈内存要大得多.

下面我们弄一段代码来演示演示—

package com.mydelo;

/**
* @author Paul
* @version 0.1
* @date 2018/3/3 0003
*/
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
}


他们的内存图如图所示

`



栈内存采用了FILO先进后出的模式,程序先执行main方法,在栈内存中开辟了一块空间,将各个变量初始化并在堆内存中开辟对应的空间存储引用类型,当执行到foo方法时,再在main空间的上方开辟一个foo方法的空间,用于存放方法中的基本数据类型和引用类型的地址,执行完毕后从上往下释放空间.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: