java static变量内存释放_java中内存分配以及static的用法

  • Post author:
  • Post category:java


Java内存分配与管理是Java的核心技术之一,一般Java在内存分配时会涉及到以下区域:

1.栈区:由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

2.堆区:由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。

3.全局区(静态区):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。

4.文字常量区:常量字符串就是放在这里的,程序结束后由系统释放 。

5.程序代码区 :见名思意:存放代码的区域。

堆栈内存的分配

栈区:局部变量存在栈内存中。函数的参数值也存放着栈区。保存类的实例,即堆区对象的引用(指针)。

堆:用来存放动态产生的数据,比如new出来的对象。注意创建出来的对象只包含属于各自的成员变量,并不包括成员方法。因为同一个类的对象拥有各自的成员变量,存储在各自的堆中,但是他们共享该类的方法,并不是每创建一个对象就把成员方法复制一次。常量池存在于堆内存。

代码:package string;

public class memonry {

/**

* @param args

* a1和a2是局部变量,放在栈区,而new出的对象放在堆区,堆区还有某类的成员变量

*/

public static void ma



版权声明:本文为weixin_34558565原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。