java中栈、堆、静态区的区别

来源:互联网 发布:w7怎么添加网络打印机 编辑:程序博客网 时间:2024/06/03 15:46

栈:

栈内存的主要作用是存放基本数据类型和引用变量,栈的内存管理是通过“先进后出”的原则。

基本数据类型的变量(int、short、long、byte、float、double、boolean、char等)以及对象的引用变量,其内存分配在栈上,变量出了作用域就会自动释放。


堆:

堆内存用来存放由new创建的对象和数组。在堆中分配的内存由虚拟机的垃圾回收器来管理。在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。引用变量就相当于是为数组或对象起的一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。  


静态区:

  静态区存储的是被static声明的静态变量,静态区属于方法区的一部分,在方法区中每个线程都共享该内存区域。