Java-内存分析.ppt

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java-内存分析

引用类型和基本类型在内存中分配内存的方式不同, 引用类型出现的时候,jvm会为它开辟两个内存空间,一个存放引用,一个存这个引用代表的真实势力。 基本数据类型的数据出现只会开辟一个内存空间,存放他的值 基本数据类型就这八种,引用数据类型包括类、数组、接口等。 ? ? ? (初学者可能会把String、Integer等类型和char、int等基本数据类型混淆,这里说明一下,Integer相当于int的“包装类”,String可以看做是char[]类型的数组,此外,Byte、Float等类似。所以这些类型应当当做引用类型去对待。) * 因为newName类型为String类型,所以newName的实际内容也会存放于堆内存中,栈内存分配的内存单元newName中只是存放指向堆内存中“小红”的地址。 * newAge的类型为int类型,所以直接将值(18)存放在栈内存分配的单元newAge中。 * 到了函数这块,会有一点点复杂,因为SetName(String name)函数有一个类型为引用类型参数name,而且传入的实参为newName,这时newName中存储的值(地址2)会赋值给这个name,所以这时newName和name存储的地址相同(即同时指向“小红”)。同理,当执行了SetName(String name)函数中的this.name=name时,会把栈内存中name中存储的值(地址2)赋值给堆内存中person的name,此时person中的name里存储的也是指向“小红”的地址。 * 之后,person原来的name值“小明”会在某个时刻被java的垃圾回收机制所回收。 * ?方法执行完毕后,栈内存中变量name所占的内存被回收。 栈这部分空间的分配和释放都是由系统自动实施的。对于所有的程序设计语言来说,栈这部分空间对程序员来说是不透明的 * 跟SetName(String name)一样,执行时也会在栈内存中为形参age分配内存单元,只不过SetAge(int age)函数中的形参age为int类型,所以直接在栈内存分配的单元中直接存储实参的值(18)即可。 * 方法执行完毕后,栈内存中变量age所占的内存被回收。 * 方法执行完毕后,栈内存中变量age所占的内存被回收。 * “ ” “ ” Java 内存分析 ——郝园园 要点说明 程序的执行过程 Java中的数据类型 内存分析 程序的执行过程 内存分析 实践出真知,下面具体在代码中分析一下 内存分析 public?class?Person?{?? ????public?String?name;?? ????public?int?age;?? ????public?Person(String?name,int?age){?? ????????this.name?=name;?? ????????this.age=age;?? ????}?? ????public?void?SetName(String?name){?? ????????this.name=name;?? ????}?? ????public?void?SetAge(int?age){?? ????????this.age=age;?? ????}?? ????public?void?SayHello(){?? ????????System.out.println(我的名字叫+name+,我+age+岁了);?? ????}?? }?? 内存分析 public?class?club?{?? ????public?static?void?main(String[]?args)?{?????????????????? ???????Person?person=new?Person(“小明,15);?? ???????String?newName=“小红;?? ???????int?newAge=18;?? ???????person.SetName(newName);?? ???????person.SetAge(newAge);?? ???????person.SayHello();?? ????}?? }?? 内存分析 内存分析 下面对Main方法中的代码逐一分析 Person?person=new?Person(“小明,15);?? Person.class Java中的数据类型 先来复习一下Java的数据类型,Java中数据类型分为两种,基本数据类型和引用数据类型,如下图: 内存分析 下面对Main方法中的代码逐一分析 2.String?newName=小红;?? 内存分析 下面对Main方法中的代码逐一分析 3.int?newAge=18;? 内存分析 下面对Main

文档评论(0)

raff95 + 关注
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档