this的内存分析

Posted shijinglu2018

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了this的内存分析相关的知识,希望对你有一定的参考价值。

this的含义:

1.区分成员变量和局部变量;

2.谁调用这个this就指向谁;

 

public class Person{

 private String name;

 private int age;

 public void setAge(int age){

        this.age=age;

 }

 public int getAge(){

  return age;

 }

 public void eat(){

  System.out.println(name+"正在吃饭,他今年"+

   age);

 }

 public static void main(String[] args) {

  Person p=new Person();

  p.setAge(10);

  System.out.println(p.getAge);

 }

}

 

 

this的内存分析:

1.说明: 普通方法和main要入栈内存,堆中存放new的对象。

2.说明:首先main方法是程序入口,并且它在栈内存中,此时

Person p就在栈中,而new Person()在堆中,且初始状态下,

堆中开辟了内存空间,且name=null 、age=0.    此时若这个

堆内存地址为111,则栈中Person p也有该地址值并指向堆中

对象new Person()。当执行到“p.setAge(10);”这个方法时,

this.age=age;<==>p.age=age;并将堆中age=0改为age=10;

执行到“System.out.println(p.getAge);”这里的时候就直接调

用了p.age方法,并从堆中获取该值,eat方法分析类似。

      关键点:1.从main开始执行 2.当前对象p调用this,则this

就等价于p;  3.当普通方法进入到栈中,执行了相应的操作后,

会在栈中销毁。

 

 

 

 

 

 

以上是关于this的内存分析的主要内容,如果未能解决你的问题,请参考以下文章

Android 插件化VirtualApp 源码分析 ( 目前的 API 现状 | 安装应用源码分析 | 安装按钮执行的操作 | 返回到 HomeActivity 执行的操作 )(代码片段

很实用的JQuery代码片段(转)

laravel特殊功能代码片段集合

C 中的共享内存代码片段

vue2.0 代码功能片段

14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段