当前位置:首页 > 内存 > 正文

java的内存分配

  • 内存
  • 2024-06-26 05:17:34
  • 3561

一、有关java内存分配

Java类有一个析构函数,但是这个函数是由JVM的垃圾收集机制自动调用的。对于不需要的对象,系统不会立即销毁它们,而是将它们存储在内存中,并根据内存使用情况动态销毁它们。

可以看到下面两个例子:

例1:A类中存储了一个64MB的字节数组,为了优化内存,可以看到destroyer的调用依然是非常频繁。当然,调用碎纸机的实际情况会根据系统配置或者硬件配置的不同而有所不同。

publicclassTest{
publicstaticvoidmain(Stringargs[])throwsIOException{
for(inti=0;i<5;i++){
Aa=newA();
}
}
私有静态类A{
privatebyte[]b;
publicA(){
b=newbyte[1024*1024*64];
n("aA对象已创建。");
}
@Override
protectedvoidFinalize()throwsThrowable{
ze();
系统。n("该对象已经消失。");
}
}
}

执行结果:


示例2:A类不存储任何数据,是一个空类。您可以看到析构函数不仅仅被调用一次。也就是说,创建的5个A对象始终保存在内存中,直到程序结束。

publicclassTest{
publicstaticvoidmain(Stringargs[])throwsIOException{
for(inti=0;i<5;i++){
Aa=newA();
}
}
私有静态类A{
publicA(){
n("创建了一个对象A。");
}
@Override
protectedvoidFinalize()throwsThrowable{
ze();
n("这个对象已经消失了。");
}
}

运行结果: