免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java中堆内存和栈内存详解Java把内存分成两种,一种叫栈内存,一种叫堆内存。当某一个函数被调用时,这个函数会在栈内存里面申请一片空间,以后在这个函数内部定义的变量,都会分配到这个函数所申请到的栈空间。当函数运行结束时,分配给函数的栈空间被收回。在这个函数中被定义的变量也随之被释放和消失。通过new产生的数组和对象分配在堆内存中。堆内存中分配的内存,由JVM提供的GC(垃圾回收机制)来管理。在堆内存中产生了一个数组对象后,我们还可以在栈中定义一个变量,这个战中变量的取值等于堆中对象的首地址。栈内存中的变量就成了堆内存中数组或者对象的引用变量。我们以后就可以在程序中直接使用栈中的这个变量来访问我们在堆中分配的数组或者对象,引用变量相当于数组或者对象起的一个别名,或者代号。引用变量是一个普通的变量,定义时在栈中分配;引用变量在被运行到它的作用域之外时就被释放,而我们的数组和对象本身是在堆中分配的,即使程序运行到使用new产生对象的语句所在的函数或者代码之后,我们刚才被产生的数组和对象也不会被释放。数组和对象只是在没有引用变量指向它,也就是没有任何引用变量的值等于它的首地址,它才会变成垃圾不会被使用,但是它任然占据着内存空间不放(这也就是我们Java比较吃内存的一个原因),在随后一个不确定的时间被垃圾回收器收走。实际上,栈中的变量指向堆内存中的变量,这就是Java中的指针!public class ArrayTest public static void main(String args)int x = new int 100;int sum=0;for(int i=0;i100;i+)sum+=xi;我们可以int x = new int 100;分成两部分来写:int x ;和x=new int 100;。第一部分相当于定义了一个普通的变量,只是这个变量中存放的数据是堆中某个对象的首地址。接着我们使用,这一句是在堆内存中产生了一个有100个元素整数类型的数组。当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外的变量都是应用类型。Person p1 = new Person (); 执行完后的内存状态创建新的对象之后,我们就可以使用“对象名.对象成员”的格式,来访问对象的成员(包括属性和方法)。public class Person int age;void shout()System.out.println(age);public static void main(String args) Person p1=new Person();Person p2=new Person();p1.age=30;p1.shout();p2.shout();上面程序运行的内存布局如下图:Java中内存分配策略及堆和栈的比较1、内存分配策略按照编译原理的观点,程序运行时的内存分配有三种原则,分别是静态的,栈式的,和堆式的。静态存储分配时指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间。这种分配策略要求程序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年弹射玩具制造行业技术路线图报告及未来五至十年龙头崛起与格局重塑
- 2026年审计技术革新与应用行业报告
- 2026年酒店行业预约消费趋势报告
- 2026中国抗癌原研药专利布局与国际化战略研究报告
- 2026智能焊接机器人工艺库建设现状报告
- 2026中职第二学年(西式烹调)西式烹调师资格核心考点解析试题及答案
- 2026年酒店餐饮行业技术创新动态报告
- 2026年电子商务行业管理制度与用户体验报告
- 2026年水生植物类行业技术革新分析报告
- 2026年马口铁包装技术创新与发展报告001
- 2026年高考数学命题特征分析及2027届高三复习备考策略讲座
- CSCO 胆道恶性肿瘤诊疗指南 2026 版发布
- 2026年档案馆行业分析报告及未来五至十年竞争格局分析
- 2026年秋季道德与法治五年级上知识点
- 上海市政府采购评审专家试题库及答案
- 2026年《中国下肢深静脉血栓诊疗临床指南(2026版)》
- 2025版《经皮冠状动脉介入治疗指南》解读
- TCABEE 080-2024《零碳建筑测评标准》
- 2026年小学生科普常识知识竞赛试题库及答案
- 胃癌护理研究进展分享
- 2025年新疆成考专升本高数一考试真题及参考答案
评论
0/150
提交评论