Java学习之创建对象内存使用机制

Posted 如魚飲水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java学习之创建对象内存使用机制相关的知识,希望对你有一定的参考价值。

Java内存空间分两种,一种是栈内存,有多个,一种是堆内存,只有一个,在堆内存中又有一块方法区。

方法区中存储的是:类的信息(类名,类的直接父类,类的访问修饰符),类变量,类方法代码,实例方法代码,常量池。注意没有实例变量。

当使用new创建一个对象的时候,JVM实际上做了三件事:加载类,创建该类的对象,初始化。

加载类就是把类加载方法区,有类信息,类变量,类方法,实例方法,常量(包含字符串常量),加载完后,需要在堆内存中开辟一块空间,完成对象的创建。堆内存中的对象空间只有实例变量,包括基本数据类型的数据和引用类型的数据,是不包含实例方法和静态方法和静态变量的,也就是说实例方法和静态方法和静态变量是被所有该类的对象所共享的。对象的初始化是由方法区中该类的构造器完成的,构造器就是一个方法,本质是函数,所以需要调用该构造器完成对象初始化。凡是调用方法,就都会开辟一个栈空间,调用完毕后,销毁该栈空间。当完成初始化后,就把堆内存中的对象首地址返回给该引用变量。

 

以上是关于Java学习之创建对象内存使用机制的主要内容,如果未能解决你的问题,请参考以下文章

Java学习之垃圾回收机制

Java学习之继承关系内存分配

java基础学习之垃圾回收机制

Java学习之单例模式

JAVA学习之反射

Redis 学习之持久化机制发布订阅虚拟内存