java中栈内存和堆内存的区别
来源:互联网 发布:php开发app教程 编辑:程序博客网 时间:2024/06/06 02:20
java把内存分成两种,一种叫做栈内存,一种叫做堆内存。
在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。
堆内存用于存放由 new 创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在数组和对象没有引用变量指向它的时候,才变成垃圾,不能再被使用,但是任然站着内存,在随后的一个不确定的时间被垃圾回收器释放掉。这个也是java比较占内存的主要原因。
按照编译原理的观点,程序运行是的内存分配有 3 中策略,分别是静态的、栈式的、堆式的。
静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间.
栈式存储分配也可称为动态存储分配,栈式存储分配要求在过程的入口处必须知道所有的存储要求,而堆式存储分配则专门负责在编译时或运行时模块入口处都无法确定存储要求的数据结构的内存分配。
从堆和栈的功能和作用来通俗的比较,堆主要用来存放对象的,栈主要是用来执行程序的.
0 0
- Java中堆内存和栈内存的区别
- java中堆内存和栈内存的区别
- Java 中栈内存和堆内存的区别
- Java中堆内存和栈内存的区别
- java中堆内存和栈内存的区别
- java中栈内存和堆内存的区别
- Java中堆内存和栈内存的区别
- Java中堆内存和栈内存的区别
- java中堆内存和栈内存的区别
- Java中堆内存和栈内存的区别
- java中堆内存和栈内存的区别
- java 内存中 栈 和 堆的区别
- java中栈和堆内存的区别
- java中栈和堆内存的区别
- java中堆和栈内存的区别
- java中堆内存(heap)和栈内存(stack)区别
- 内存中堆和栈的区别
- 内存中堆和栈的区别
- Spring学习笔记---7-Spring事务管理(3)
- hdu 5569 matrix【dp】
- Zxing里面的东西,在拍照时设置相机参数 会用到,所以记下来(日记)
- ios自动打包(适用于批量打包)
- struts2的常用标签(二)
- java中栈内存和堆内存的区别
- 只能输入数字,不需要小数点,错误可能是
- 使用Tomcat时一次Http访问的过程
- Codeforces 617EXOR and Favorite Number (Round #340 (Div. 2) E题) 莫队算法 + 异或基本性质
- 原型模式(Prototype Pattern)
- 引导界面微场景交互设计与技术实现V2.0
- Android内存泄漏杂谈
- 多线程之NSOperation
- JNDI的作用是什么