黑马程序员-JAVASE入门(内存空间的分配)
来源:互联网 发布:淘宝代销代发货 编辑:程序博客网 时间:2024/06/03 20:27
------- android培训、java培训、期待与您交流! ----------
Java在内存中分配的内存空间:有堆栈、堆、方法区、本地方法区和寄存器,以下对它们在内存中存储的数据进行简单描述:
栈内存: 用于存储局部变量,数据使用完后所占空间自动释放。
堆内存: 存放数组和对象(非静态成员变量的数据和数组的数据),通过new建立的实例都存放在堆内存中。每一个实体都有内存地址, 实体中的变量都有默认初始化值:基本数据类型中boolean型数组的默认值是false,byte、short、int、long,float,double的默认初始化值为0,char类型的默认初始化值为空格,引用数据类型默认初始化值为null。实体不再被使用后,会在不确定的时间被垃圾回收器回收。
方法区(共享区,数据区):这里包括(类:字节码文件对象、静态区、常量池)
存放静态成员变量和静态方法,存放类的模板,方法区中有一个常量池,在常量池中存放字符串常量String ,其存放方式跟栈内存中局部变量的存放相似:假设要存放字符串“abc”(通过String x =“abc”;的方式),则先查找常量池中有没有“abc”的对象,若有则返回一个此对象的引用给x,若不存在则 开辟一个新的空间存放此字符串,并让x引用该对象。如果是通过String x = new String(“abc”);的方式则首先会在堆内存中new一个对象,存放“abc”,并将该对象的引用传给x,然后查看常量池中是否存在“abc”,若存在则将堆内存中的对象与之关联,若不存在,则在常量池中开辟一个空间存放“abc”,并将堆内存中的对象与之关联。若是将两个字符串拼接到一起时则会在堆内存中创建一个对象,存放拼接后的字符串,若要使拼接的字符串存放于常量池中则要用到intern()方法,具体用法:x = (s1+s2).intern(),s1 s2为待拼接的字符串。
本地方法区:
寄存器:
- 黑马程序员-JAVASE入门(内存空间的分配)
- 黑马程序员-JAVASE入门(异常,包)
- 黑马程序员-JAVASE入门(集合Set)
- 黑马程序员-JAVASE入门(泛型)
- 黑马程序员-JAVASE入门(Map集合)
- 黑马程序员-JAVASE入门(其他对象)
- 黑马程序员-JAVASE入门(GUI类)
- 黑马程序员-JAVASE入门(多线程)
- 黑马程序员-JAVASE入门(集合)
- 黑马程序员-JAVASE入门(枚举)
- 黑马程序员-JAVASE入门(网络编程)
- 黑马程序员-JAVASE入门(正则表达式)
- 黑马程序员-JAVASE入门(数组)
- 黑马程序员-JAVASE入门(异常)
- 黑马程序员-JAVASE入门(泛型)
- 黑马程序员-JAVASE入门( IO流 )
- 黑马程序员-JAVASE入门(多线程)
- 黑马程序员-JAVASE入门(组成部分1变量,函数等)
- ubuntu下修改path环境变量三种方法
- Period 1358 KMP
- sql 查询结果合并union all用法
- php curl详解用法[真的详解]
- 字符串使用split没有反应
- 黑马程序员-JAVASE入门(内存空间的分配)
- web xml 文件开头几行的解释
- SAP ABAP 的常用debug方式
- HSQLDB入门
- 一起学mini2440裸机开发(六)--UART原理与基础实验
- 情景模式界面设计
- 传智播客JNI视频第四讲
- 字典树(Trie)
- xml的几种解析方式