简单理解Java堆栈
来源:互联网 发布:制作视频mp4软件 编辑:程序博客网 时间:2024/05/22 13:21
Java中把变量内存区域划分成两种:一种是栈内存,一种是堆内存。
一些基本类型的变量数据和对象的引用变量都在栈内存中分配。当定义一个变量时,在栈中会为这个变量分配内存空间,当该变量退出该作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。每一个线程包含一个栈区,每个栈中的数据(原始类型和对象引用都是私有的,其他栈不能访问。
由new关键字创建的对象和数组,在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。在堆中产生了一个数组或对象后,在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。数组和对象本身在堆中分配,即使程序运行到使用 new 产生数组或者对象的语句所在的代码块之外,数组和对象本身占据的内存不会被释放,数组和对象在没有引用变量指向它的时候,才变为垃圾,不能再被使用,但仍然占据内存空间不放,在随后的一个不确定的时间被垃圾回收器回收释放掉。这也是java比较占内存的原因。实际上,栈中的变量指向堆内存中的变量,可认为是java中的指针。需要注意的是jvm只有一个堆区(heap)被所有线程共享。
阅读全文
0 0
- 简单理解Java堆栈
- 关于Java堆栈的简单理解
- 堆 、堆栈 简单理解
- Java---堆栈的理解
- 如何理解java堆栈
- 深入理解Java堆栈
- java 堆栈的理解
- [学习]简单理解堆栈平衡
- Java堆栈简单介绍
- Java堆栈简单实现
- Java 中堆栈的理解
- Java中堆栈的理解
- 关于java堆栈的理解
- Java堆栈的关系理解
- 简单理解内存中的堆栈与数据结构中的堆栈
- c语言中堆栈的简单理解
- 关于static与堆栈的简单理解
- java 堆栈的简单知识
- 日期格式化
- WAF安全应用防火墙(openresty部署)
- servlet 、filter 、listener 初始化的顺序
- Google 代码规范
- bootstrap-datepicker只显示年等格式说明
- 简单理解Java堆栈
- auto,register,static分析
- 两周学会Python 第01天(上午)
- weblogic linux下静默安装
- Struts2拦截器底层原理
- mysql主从复制实现数据库同步
- keyboard.js
- git放弃修改,强制覆盖本地代码
- 项目维护学的东西很丰富!!!!