- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一、Java内存分配1、 Java有几种存储区域?* 寄存器???? -- 在CPU内部,开发人员不能通过代码来控制寄存器的分配,由编译器来管理* 栈???? -- 在Windows下, 栈是向低地址扩展的数据结构,是一块连续的内存的区域,即栈顶的地址和栈的最大容量是系统预先规定好的。???? -- 优点:由系统自动分配,速度较快。???? -- 缺点:不够灵活,但程序员是无法控制的。???? -- 存放基本数据类型、开发过程中就创建的对象(而不是运行过程中)* 堆???? -- 是向高地址扩展的数据结构,是不连续的内存区域???? -- 在堆中,没有堆栈指针,为此也就无法直接从处理器那边获得支持???? -- 堆的好处是有很大的灵活性。如Java编译器不需要知道从堆里需要分配多少存储区域,也不必知道存储的数据在堆里会存活多长时间。* 静态存储区域与常量存储区域???? -- 静态存储区用来存放static类型的变量???? -- 常量存储区用来存放常量类型(final)类型的值,一般在只读存储器中* 非RAM存储???? -- 如流对象,是要发送到另外一台机器上的???? -- 持久化的对象,存放在磁盘上2、 java内存分配???? -- 基础数据类型直接在栈空间分配;???? -- 方法的形式参数,直接在栈空间分配,当方法调用完成后从栈空间回收;???? -- 引用数据类型,需要用new来创建,既在栈空间分配一个地址空间,又在堆空间分配对象的类变量;???? -- 方法的引用参数,在栈空间分配一个地址空间,并指向堆空间的对象区,当方法调用完后从栈空间回收;???? -- 局部变量 new 出来时,在栈空间和堆空间中分配空间,当局部变量生命周期结束后,栈空间立刻被回收,堆空间区域等待GC回收;???? -- 方法调用时传入的 literal 参数,先在栈空间分配,在方法调用完成后从栈空间释放;???? -- 字符串常量在 DATA 区域分配 ,this 在堆空间分配;???? -- 数组既在栈空间分配数组名称, 又在堆空间分配数组实际的大小!3、Java内存模型* Java虚拟机将其管辖的内存大致分三个逻辑部分:方法区(Method Area)、Java栈和Java堆。??? -- 方法区是静态分配的,编译器将变量在绑定在某个存储位置上,而且这些绑定不会在运行时改变。?? ??? ?常数池,源代码中的命名常量、String常量和static 变量保存在方法区。??? -- Java Stack是一个逻辑概念,特点是后进先出。一个栈的空间可能是连续的,也可能是不连续的。??????? 最典型的Stack应用是方法的调用,Java虚拟机每调用一次方法就创建一个方法帧(frame),退出该方法则对应的? 方法帧被弹出(pop)。栈中存储的数据也是运行时确定的???? -- Java堆分配(heap allocation)意味着以随意的顺序,在运行时进行存储空间分配和收回的内存管理模型。?? ???? 堆中存储的数据常常是大小、数量和生命期在编译时无法确定的。Java对象的内存总是在heap中分配。4、Java内存分配实例解析???? 常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。?????常 量池在运行期被JVM装载,并且可以扩充。String的intern()方法就是扩充常量池的一个方法;当一个String实例str调用 intern()方法时,Java查找常量池中是否有相同Unicode的字符串常量,如果有,则返回其引用,如果没有,则在常量池中增加一个 Unicode等于str的字符串并返回它的引用。???? 例:???? String s1=new String(kvill);???? String s2=s1.intern();???? System.out.println( s1==s1.intern() );//false???? System.out.println( s1+ +s2 );// kvill kvill???? System.out.println( s2==s1.intern() );//true???? 这个类中事先没有声名”kvill”常量,所以常量池中一开始是没有”kvill”的,当调用s1.intern()后就在常量池中新添加了一 个”kvill”常量,原来的不在常量池中的”kvill”仍然存在。s1==s1.intern()为false说明原来的“kvill”仍然存 在;s2现在为常量池
您可能关注的文档
- 摩根面试准备要点(Java).doc
- 魔乐科技_Android开发实战经典说明文档.doc
- 某软件公司JAVA培训资料.doc
- 某通讯公司的Java面试题.doc
- 内蒙古工业大学2008年公开招聘工作人员公告.doc
- 南大自考.doc
- 南京大学2009年招收工程硕士专业学位具体事宜.doc
- 能说明你的Javascript技术很烂的五个原因.doc
- 能用于防震减灾的电子信息技术111.doc
- 你不知道的事情_关于java.util.concurrent(第一部分).doc
- 2025浙江绍兴市环城河管理有限公司招聘1人笔试备考题库及答案解析.docx
- 2025四川雅安市石棉县教育局考调学校教师2人笔试备考题库及答案解析.docx
- 2025云南省文山市智华实验中学教师考试流动工作实施(20人)笔试备考题库及答案解析.docx
- 2025年达州高新区公开选聘中小学校副校长笔试备考题库及答案解析.docx
- 2025浙江嘉兴海宁云杉建筑设计有限公司招聘7人笔试备考题库及答案解析.docx
- 2025江苏镇江市人社局所属江苏省镇江技师学院教师招聘9人笔试备考题库及答案解析.docx
- 2025年广东安全员报名试题及答案.doc
- 2025云南省文山州砚山县妇幼保健院编制外专业技术人员招聘(2人)笔试备考题库及答案解析.docx
- 2025年山西太原事业单位招聘考试卫生类临床医学专业知识试卷.docx
- 2025河南开封市妇幼保健院招聘人事代理工作人员14人笔试备考题库及答案解析.docx
文档评论(0)