Java基础(课堂笔记)之对象内存管理

本文深入探讨了Java中对象的内存管理,包括基本和引用数据类型的内存分配,JVM如何运行.class程序,以及对象创建的具体步骤。理解这些原理对于优化Java应用性能至关重要。

对象内存管理
一、基本数据类型
1.数值
2.整型:byte、short、int 、long
3.浮点型:float、double
4.字符: char
5.布尔:boolean true/false

二、引用数据类型
1.类
public class User{
private String name;
}
User user = new User();
2. 接口
public interface phone{
public void call();
}
public HuaWei implements phone{
public void call(){
}
}
3.数组
int[] arr = new int[2];
String[] strArr = new String[];
三、JVM虚拟机如何运行.class程序:
1)运行前:JVM虚拟会向计算机申请初始内存空间
2)运行中:java程序运行之后,java程序会不断向JVM请求内存,一旦JVM使用内存
超过了初始内存,JVM继续向计算机请求更多的内存空
3)内存溢出:当JVM虚拟机向计算机请求的内存超出了预定范围之后,则内存溢出
outOfMemeory
四、JVM虚拟机内内存管理
1)方法区(method area)
2)堆(heap)
3)栈(stack)
在这里插入图片描述
五、引用数据类型创建流程
1)在堆区划分一块内存空间存储相应值
2)在栈区划分内存空间指向新创建对象在堆中的地址
六、类的实例对象的创建过程 User user = new User()
1.先检查需要使用类对象的.class文件在方法区是否存在
2.如果不存在,则先加载相应的.class文件
3.加载.class文件流程
(1)静态成员属性及代码块:加载静态方法区(重点:只加载一次)
-》静态代码块:加载.class文件自动执行,并且执行一次
-》非静态代码块:在创建实例对象的时候调用,每次创建都会被调用
(2)非静态成员属性和方法:加载到非静态方法区
4.在堆区划分内存空间,根据类的模板,赋予类的属性初始值
5.调用相应构造函数,给对象属性赋值
6.在栈区划分内存空间保存对象的地址
六、A object = new A()

public class A {
	String name;
	public static int a = 5;
	// 构造方法
	public A() {
		System.out.println("class A");
	}
	// 代码块
	{
		System.out.println("I'm class A");
	}
	// 静态代码块
	static {
		// background = 加载图片操作
		System.out.println("class A static");
	}
	public void show() {
		System.out.println(name);
	}
}

运行流程
第一步:编译A.java ----> A.class
第二步:将A.class 加载到JVM虚拟机方法区
第三步:执行A.class中的静态代码块,即以下代码块
static {
// background = 加载图片操作
}
第四步:加载静态属性到静态方法区
public static int a = 5;
第五步:将非静态属性和方法加载非静态方法区
// 代码块
{
System.out.println(“I’m class A”);
}
String name;
public void show() {
System.out.println(name);
}
第六步:执行类中非静态代码块
// 代码块
{
System.out.println(“I’m class A”);
}
第七步:在堆中划分内存空间,为新建对象进行属性的初始化
第八步:调用构造方法,为对象的属性赋值
第九步:在栈区划分内存空间,保存新建对象的内存地址

A object1 = new A(); // 第一次

A object2 = new A(); // 第二次,直接从第六步开始
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值