Java中栈内存和堆内存入门
作者:bea
引用变量是普通变量,定义时所在栈中分配内存,引用变量在程序运行到作用域外释放。而数组和对象本身在堆中分配,即使程序运行到使用new产生数组和对象的语句所在地代码块之外,数组和对象本身占用的堆内存也不会被释放,数组和对象本身占用的堆内存也不会被释放。 1. 非RAM存储:硬盘等永久存储空间 2. 常量池:存放字符串常量和基本类型常量(public static final)。 3. 静态域:存放静态成员(static定义的) 4. 堆:存放所有new出来的对象。
引用变量是普通变量,定义时所在栈中分配内存,引用变量在程序运行到作用域外释放。而数组和对象本身在堆中分配,即使程序运行到使用new产生数组和对象的语句所在地代码块之外,数组和对象本身占用的堆内存也不会被释放,数组和对象本身占用的堆内存也不会被释放。
1. 非RAM存储:硬盘等永久存储空间
2. 常量池:存放字符串常量和基本类型常量(public static final)。
3. 静态域:存放静态成员(static定义的)
4. 堆:存放所有new出来的对象。
5. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在
堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)
6.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.
1. 非RAM存储:硬盘等永久存储空间
2. 常量池:存放字符串常量和基本类型常量(public static final)。
3. 静态域:存放静态成员(static定义的)
4. 堆:存放所有new出来的对象。
5. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在
堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)
6.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.
引用变量是普通变量,定义时所在栈中分配内存,引用变量在程序运行到作用域外释放。而数组和对象本身在堆中分配,即使程序运行到使用new产生数组和对象的语句所在地代码块之外,数组和对象本身占用的堆内存也不会被释放,数组和对象本身占用的堆内存也不会被释放。数组和对象在没有引用变量指向它的时候,才变成垃圾,不能再被使用,但是仍然占着内存, 在随后的一个不确定的时间被垃圾回收器释放掉。这个也是java比较占内存的主要原因。
有用 | 无用猜你喜欢
您可能感兴趣的文章:
- Java web开发字符编码总结
- Java web怎样实现异步编程
- 如何调度Java web开发中的任务
- Java实现文件的删除、拷贝和递归
- J2ME应用程序开发注意事项
- 如何用Java操作Excel并给jxl加边框
- 总结Java程序运行时常见的异常
- 说说Java.util包中提供的各个类
- 解决JSP中文字符乱码问题
- 实例:Java获取指定日期的前后天
- Java DTD dom解析受XML的约束
- 实例:Java遍历文件夹
- Java路径分类和使用注意要点
- 浅谈J2EE框架设计技术
- 代码生成工具在Java开发中的作用
- Java编程如何节省内存效率高
- 何时被创建Java对象实例
- 怎样确保无线J2ME的安全
- this关键字在Java中怎么用