细谈 对象的初始化过程------内存中的实现过程?

原创 2015年11月19日 17:28:27

今天对于内存的理解 又加深了一步:

对下面代码的理解:

  1. class Person  
  2. {  
  3.     private String name="xiaohong";  
  4.     private int age=23;  
  5.     private static String country="CN";  
  6.     {  
  7.         System.out.println(name+"  "+age);  
  8.     }  
  9.     public Person(String name,int age)  
  10.     {  
  11.         this.name = name;  
  12.         this.age = age;  
  13.     }  
  14.     public void setName(String name)  
  15.     {  
  16.        this.name = name;  
  17.     }  
  18.     public String getName()  
  19.     {  
  20.         return this.name;  
  21.     }  
  22. }  
  23. class  Demo7  
  24. {  
  25.     public static void main(String[] args)   
  26.     {  
  27.         Person p = new Person("小白",20);  
  28.         p.setName("小黑");  
  29.     }  
  30. }  

内存图解:  上图为证



    总结:

内存是底层的真理! 如果,真正的理解了底层内存是怎么实现的,学任何一种语言都很简单!

因为,你掌握了 金钥匙!

下面是上面代码的运行时 加载过程:

1 JVM 启动类加载器,前篇介绍过!加载API 类库和扩展类库!之后加载我们程序中用的

类!例如: Demo7.class , person.class!  

2  加载代码中的 静态代码块 static {} 对类 初始化

3  调用 Demo 中的 main 函数,进栈!

4  这个时候 Person    p = new Person()  

在 对内存中 开辟内存空间,

5  对堆中的成员变量进行  默认初始化

6  对堆中的成员变量进行  显示初始化

7  执行构造 代码块! 对对象 初始化!

8  执行 构造方法!

9  将 对象的地址 赋值给 p!  ( 进栈! )

版权声明:本文为博主原创文章,未经博主允许不得转载。

浅析Java内存和创建对象时成员的初始化过程

Java虚拟机在运行需要在内存中开辟空间,在空间中进一步分区,每个分区都有其对数据的处理特点, 内存的划分: 1、寄存器: CPU在处理,存储速度非常快,程序不可控制 2、本地方法区:和所在系统...

创建string对象过程的内存分配:

  • 2012年04月16日 15:18
  • 50KB
  • 下载

Dalvik虚拟机为新创建对象分配内存的过程分析

在前面一文中,我们分析了Dalvik虚拟机创建Java堆的过程。有了Java堆之后,Dalvik虚拟机就可以在上面为对象分配内存了。在Java堆为对象分配内存需要解决内存碎片和内存不足两个问题。要解决...

java内存对象分配过程研究

  • 2011年11月08日 11:52
  • 123KB
  • 下载

java面向对象——继承最终章--子类的实例化过程(内存)

一个对象的实例化过程:Person p=new Person(); 1.jvm会读取指定的路径下的Person.class文件,并加载进内存。    并会先加载Person中的父类(如果有父类对象的情...

解析VC6.0中为类对象申请内存的过程

解析VC6.0中为类对象申请内存的过程(一)   摘  要   在用VC开发时常常需要对内存进行操作,其中C++中提供了运算符new与delete;而C语言库中提供有malloc和fr...

Dalvik虚拟机为新创建对象分配内存的过程分析

在前面一文中,我们分析了Dalvik虚拟机创建Java堆的过程。有了Java堆之后,Dalvik虚拟机就可以在上面为对象分配内存了。在Java堆为对象分配内存需要解决内存碎片和内存不足两个问题。要解决...

ART运行时Compacting GC为新创建对象分配内存的过程分析

在引进Compacting GC后,ART运行时优化了堆内存分配过程。最显著特点是为每个ART运行时线程增加局部分配缓冲区(Thead Local Allocation Buffer)和在OOM前进行...

Java创建对象过程中,内存的分配

对象的内存分配 我们都知道,要使用类,就一定要为其创建对象。那么,在创建对象过程中,内存是如何分配的呢? 类的本质是一种引用数据类型,这与数组是一样的。比如本文提供的简单例子程序中的Person类...
  • h082602
  • h082602
  • 2017年05月24日 16:56
  • 906
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:细谈 对象的初始化过程------内存中的实现过程?
举报原因:
原因补充:

(最多只允许输入30个字)