JVM内存静态与动态分配

1 静态内存分配与回收

在Java中静态分配内存是指在Java被编译时就已经能够确定需要的内存空间,当程序被加载时系统把内存一次性分配给它。这些内存不会再程序执行时发生变化,直到程序运行结束才被回收。在Java的类和方法中的局部变量包括原生数据类型和对象的引用都是静态分配的。这些静态内存实际上是在栈上分配的。静态内存空间当代码运行结束后,对应的栈帧被撤销被回收。
public void main(int arg) {
		String s="songxu";
		Long long1=1l;
		long long2=2l;
		Object object=new Object();
		int i=0;
		
	}

如上面这个main方法,i,long2,arg是原生数据类型,i会占用4个字节,long2 会占用8个字节,s,args,long1,object是引用类型,他们会占用4个字节空间,因此这个方法实际占用28个字节。而这些空间是编译的时候就确定的。

2 动态内存分配与回收

在Java中对象的内存空间是动态分配的,所谓的动态分配是在程序执行时才知道要分配的储存空间大小,而不是在编译时就确定的。前面的long1代表Long对象,只有JVM在解析Long类型时才知道这个类中有哪些信息,这些信息有哪些类型,然后再为这些信息分配相应的储存空间储存相应的值。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值