Java中堆内存和栈内存的区别
来源:互联网 发布:in软件客服 编辑:程序博客网 时间:2024/05/22 13:01
Java中堆内存和栈内存的区别
本文引用:http://www.cnblogs.com/whgw/archive/2011/09/29/2194997.html
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存
在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。
堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在
数组和对象在没有引用变量指向它的时候,才变成垃圾,不能再被使用,但是仍然占着内存,在随后的一个不确定的时间被垃圾回收器释放掉。这个也是java比较占内存的主要原因。
按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的.
静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间.
栈式存储分配也可称为动态存储分配,栈式存储分配要求在过程的入口处必须知道所有的存储要求,而堆式存储分配则专门负责在编译时或运行时模块入口处都无法确定存储要求的数据结构的内存分配。
从堆和栈的功能和作用来通俗的比较,堆主要用来存放对象的,栈主要是用来执行程序的.
0 0
- Java中堆内存和栈内存的区别
- java中堆内存和栈内存的区别
- Java 中栈内存和堆内存的区别
- Java中堆内存和栈内存的区别
- java中堆内存和栈内存的区别
- java中栈内存和堆内存的区别
- Java中堆内存和栈内存的区别
- Java中堆内存和栈内存的区别
- java中堆内存和栈内存的区别
- Java中堆内存和栈内存的区别
- java中堆内存和栈内存的区别
- java 内存中 栈 和 堆的区别
- java中栈和堆内存的区别
- java中栈和堆内存的区别
- java中堆和栈内存的区别
- java中堆内存(heap)和栈内存(stack)区别
- 内存中堆和栈的区别
- 内存中堆和栈的区别
- Android Studio2.0 教程从入门到精通Windows版 - 安装篇
- 工程中导入hibernates和Struts2时jar包冲突问题解决
- uva 11078 开放式学分制 便于理解下尺取法以及动态的思想吧
- JAVA 跨平台原理以及jdk、jre、jvm之间的关系
- CreateMutex互斥量
- Java中堆内存和栈内存的区别
- C++11中的多线程开发
- 【LeetCode】 230. Kth Smallest Element in a BST
- Java注解开发及ICOP平台中的应用
- test单元测试的创建及使用
- WebService初窥
- PS 滤镜插件Nick Collection
- Java通信之服务器生猛上手
- Comparable接口的實現和使用