Java把内存分成两种,一种叫做栈内存,一种叫做堆内存
在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。
堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中的首地址,在栈中的这个特殊的变量就变成了数组或者对象的引用变量,以后就可以在程序中使用栈内存中的引用变量来访问堆中的数组或者对象,引用变量相当于为数组或者对象起的一个别名,或者代号。
引用变量是普通变量,定义时在栈中分配内存,引用变量在程序运行到作用域外释放。而数组&对象本身在堆中分配,即使程序运行到使用new产生数组和对象的语句所在地代码块之外,数组和对象本身占用的堆内存也不会被释放,数组和对象在没有引用变量指向它的时候,才变成垃圾,不能再被使用,但是仍然占着内存,在随后的一个不确定的时间被垃圾回收器释放掉。这个也是java比较占内存的主要原因,实际上,栈中的变量指向堆内存中的变量,这就是 Java 中的指针!
FROM:http://blog.csdn.net/chengyingzhilian/article/details/7781858
相关推荐
java堆栈信息dump文件
java堆栈详解
打印JAVA堆栈的方法
Java 把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的 一些基本类型的变量和对象的引用变量都是在函数 的栈内存中分配。当在一段代码块中定义一个变量时,java 就在栈中 为这个变量分配内存空间...
Java堆栈分析操作详细说明,找到内从泄露原因
本人学习Java时苦找的内存分析我把它整理成WORD文档供大家学习Java堆栈内存分析笔记。
堆和栈是两个不同的概念 堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个...虽然堆栈,堆栈的说法是连起来叫,但是他们还是有很大区别的,连着叫只是由于历史的原因。
java 堆栈的演示程序 jsp程序 源代码设计 下载 欢迎您的下载
文章介绍了使用Java编程语言实现了基于数组的Java堆栈,并实现了一些基本的堆栈方法
java dump 堆栈 dumpAnalyzer 分析,在日常工作中,经常会遇到,系统跑着跑着就会出现性能问题,CPU居高不下。这个时候我们就需要对系统的堆栈信息进行分析。这里就介绍如何使用IBM内存检测工具(dumpAnalyzer)。
用 Java 实现数据结构中的堆栈 用 Java 实现数据结构中的堆栈
java的堆栈java的堆栈java的堆栈java的堆栈java的堆栈java的堆栈java的堆栈
WAS IBM java线程堆栈分析工具,jca467.jar
堆栈实现的java 计算器 + - * / % ()
React-material-ui 拥有一个纯Java堆栈
堆栈实现的计算器-数据结构课程设计,应用字符优先级
本程序是java堆栈的应用,实现中缀表达式转换成后缀表达式以及结果计算。
Java script实现堆栈和链表,实现了堆栈和链表的所有功能。
这是教学的ppt 可用于大学本专课件 也可用于自学
清楚的介绍了java中基本数据类型和引用数据类型在内存中的分配