Java的内存分配

来源:互联网 发布:mysql regexp使用 编辑:程序博客网 时间:2024/06/05 10:43

先来段简单的总结吧,方便回忆。

Java的内存分配有三种,
1、静态存储区:内存在程序编译时就分配好了,比如静态变量;
2、栈区:各种原始数据类型的局部变量都是在栈上创建的,当程序退出该变量的作用范围的时候,这个变量的内存会被自动释放。 (印象中,栈区放的应该是对源代码的正规表达式之类的,记不太清了,本身编译原理就没学好。不过如果是这样,就说的通了。所有的变量名都在这里“定义”,包括类。)
3、堆区:对象(包括数组)都是在堆中创建的。程序在运行的时候用new关键字来创建对象,对象创建时会在堆中为其分配内存。


Java中分配堆内存是自动初始化的。Java中所有对象的存储空间都是在堆中分配的,但是这个对象的引用却是在堆栈中分配,也就是说在建立一个对象时从两个地方都分配内存,在堆中分配的内存实际建立这个对象,而在堆栈中分配的内存只是一个指向这个堆对象的指针(引用)而已。
原创粉丝点击