在执行Java程序的过程中,Java虚拟机会将其管理的内存划分为几个不同的数据区域。这些区域有自己的目标,以及创建和破坏的时间。有些区域随着虚拟机进程的启动而存在,有些区域根据用户线程开始和结束销毁的时间创建和销毁。根据《Java虚拟机规范(第2版)》
Java虚拟机管理的内存将包括以下运行时数据区域,如下:
Java类有一个析构函数,但这个函数是由JVM垃圾收集机制本身调用的。对于不必要的东西,系统不会立即销毁它们,而是将它们存储在内存中,并根据内存使用情况动态删除它们。
看下面两个例子:
例子1:A类中的64MB字节数组。它是为了内存优化而存储的,你可以看到。析构函数调用仍然是最常见的。当然,析构函数调用的实际情况会根据系统配置或硬件配置而有所不同。
运行输出:
示例2:A类没有存储数据,该类为空。据说驱逐舰不止一次看到过。也就是说,直到程序结束为止创建的五个对象都存储在内存中。
运行结果:
上一篇:苹果x内存满了怎么清理
下一篇:我的世界java内存分配