jvm中的堆和栈(面试总结)
基本的概念
基本类型包括:byte、short、int、long、char、float、double、boolean
引用类型包括:类类型、接口类型和数组
栈内存:
程序在栈内存中运行
栈中存的是基本数据类型和堆中对象的引用
栈是运行时的单元
栈解决程序的运行问题,即程序如何执行,或者说如何处理数据
一个线程一个独立的线程栈
堆内存:
程序运行所需的大部分数据保存在栈内存中
堆中存的是对象
堆是存储的单元,堆只是一块共享的内存
堆解决的是数据存储的问题,即数据怎么放,放在哪儿
所有线程共享堆内存
以下是几个小技巧,记住了就更容易理解堆栈
1. 栈存储的信息都是跟当前线程(或程序)相关的信息。(局部变量、程序运行状态、方法、方法返回值)等,
栈中存的是基本数据类型和堆中对象的引用。一个对象的大小是不可估计的,或者说是可以动态变化的,但是
在栈中,一个对象只对应了一个4byte的引用(堆栈分离的好处)。
2. 堆只负责存储对象信息。
平时我们报错java.lang.StackOverflowError异常
就是因为我们栈中存储的数据比较多
堆和栈中,栈是程序运行最根本的东西。程序运行可以没有堆,但是不能没有栈。
而堆是为栈进行数据存储服务的,说白了堆就是一块共享的内存。
相关推荐
bulargyzone 2020-10-26
csdnxingyuntian 2020-10-19
Locksk 2020-10-12
liufangbaishi0 2020-09-23
darlingtangli 2020-09-10
lxttiger 2020-08-18
coolrainman 2020-07-28
一支菜鸟 2020-07-27
zhouxihua0 2020-07-27
nangongyanya 2020-07-26
chenkai00 2020-07-26
voiletbin 2020-07-26
ChenRuiyz 2020-07-26
pbaabc 2020-07-23
nbfcome 2020-07-19
liufangbaishi0 2020-07-18
ChenRuiyz 2020-07-18
empireghost 2020-07-10
一支菜鸟 2020-07-06