jvm系列堆和栈的区别(一)
来源:互联网 发布:java基础面试题及答案 编辑:程序博客网 时间:2024/06/14 10:01
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存
在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。
堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中的首地址,在栈中的这个特殊的变量就变成了数组或者对象的引用变量,以后就可以在程序中使用栈内存中的引用变量来访问堆中的数组或者对象,引用变量相当于为数组或者对象起的一个别名,或者代号。
引用变量是普通变量,定义时在栈中分配内存,引用变量在程序运行到作用域外释放。而数组&对象本身在堆中分配,即使程序运行到使用new产生数组和对象的语句所在地代码块之外,数组和对象本身占用的堆内存也不会被释放,数组和对象在没有引用变量指向它的时候,才变成垃圾,不能再被使用,但是仍然占着内存,在随后的一个不确定的时间被垃圾回收器释放掉。这个也是java比较占内存的主要原因。http://www.cnblogs.com/whgw/archive/2011/09/29/2194997.html
0 0
- jvm系列堆和栈的区别(一)
- 关于JVM和(堆和栈的区别)
- 堆和栈的区别-JVM内存
- 堆和栈的区别(一)
- 堆和栈的区别(一)
- 堆和栈的区别(一)
- 堆和栈的区别(一)
- 堆和栈的区别(一)
- 堆和栈的区别(一)
- 堆和栈的区别(一)
- jvm的堆和栈
- JVM调优总结(一)-堆和栈概念
- jvm优化(一)内存模型栈和堆
- 内存分配(一)堆和栈的区别
- 堆区和栈区的区别(一)
- jvm系列一:java内存组成介绍:堆(Heap)和非堆(Non-heap)内存
- 【JVM学习系列】JDK、JRE和JVM的区别
- java jvm-"=="和equal,堆和栈的区别和联系
- [leetcode]Two Sum
- lintcode: Implement Queue by Two Stacks
- Android 自定义View
- android接入即时IM
- 编程技巧
- jvm系列堆和栈的区别(一)
- Grpc 在Android中的配置
- Ubuntu vpn pptp客户端搭建过程中错误解决
- iOS学习之路(二)--基础篇
- arm-qt编译程序错误解决(没有-lts,arm-linux-g++找不到)
- 全新网站后台管理系统下载 微信公众号 CMS 工作流 ERP
- diamond动态配置的系统的快速搭建
- GDB 栈指针 SIGSEGV
- StringBuffer