java内存分配初探

转载 2007年09月20日 18:38:00
         Java把内存划分成两种:一种是栈内存,另一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立即被另作它用。
        堆内存用来存放由new创建的对象和数组,在堆中分配的内存,由java虚拟机的自动垃圾回收器来管理。在堆中产生了一个数组或者对象之后,还可以在栈中定义一个特殊的变量,让栈中的这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或者对象,引用变量就相当于是为数组或者对象起的一个名称。引用变量是普通的变量,定义时在栈中分配,引用变量在程序运行到其作用域之外后被释放。而数组和对象本身在堆中分配,即使程序运行到使用new产生数组或者对象的语句所在的代码块之外,数组和对象本身占据的内存不会被释放,数组和对象在没有引用变量指向它的时候,才变为垃圾,不能在被使用,但仍然占据内存空间不放,在随后的一个不确定的时间被垃圾回收器收走(释放掉)。这也是java比较占内存的原因。
 

相关文章推荐

JVM初探- 内存分配、GC原理与垃圾收集器

标签 : JVM JVM内存的分配与回收大致可分为如下4个步骤: 何时分配 -> 怎样分配 -> 何时回收 -> 怎样回收. 除了在概念上可简单认为new时分配外, 我们着重介绍后面的3...

JVM初探- 内存分配、GC原理与垃圾收集器

JVM内存的分配与回收大致可分为如下4个步骤: 何时分配 -> 怎样分配 -> 何时回收 -> 怎样回收.  除了在概念上可简单认为new时分配外, 我们着重介绍后面的3个步骤: I. 怎...

【C#基础】初探.Net内存分配原理

基本概念 CLR:公共语言运行时,类似Java的jvm,是直接建立在OS上的虚拟环境,主要任务是管理代码运行。CLR现在支持几十种现代的编程语言为它编写代码,然后以一种中间语言(Intermedia...

JVM初探- 内存分配、GC原理与垃圾收集器

JVM初探- 内存分配、GC原理与垃圾收集器 JVM内存的分配与回收大致可分为如下4个步骤: 何时分配 -> 怎样分配 -> 何时回收 -> 怎样回收. 除了在概念上可简单认为new时分配外...

java实现的内存分配

  • 2013年11月20日 09:41
  • 7KB
  • 下载

java中内存分配

  • 2013年01月21日 16:32
  • 17KB
  • 下载

图解Java单例模式内存分配

1:虚拟机加载StaticDemo类,保存类型信息到方法区。 2:通过保存在方法区的字节码,虚拟机开始main方法,main方法入栈。 3:进入main方法第一条指令, Person.getIns...

Java内存分配原理

  • 2013年08月07日 10:26
  • 73KB
  • 下载

Java内存分配及垃圾回收文章汇总

  • 2010年11月11日 14:51
  • 379KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java内存分配初探
举报原因:
原因补充:

(最多只允许输入30个字)