我正在运行具有以下JVM参数的应用程序,
-J-Xms2048m -J-Xmx2048m -J-XX:MaxMetaspaceSize=1024m -J-XX:+UseConcMarkSweepGC -J-XX:+CMSClassUnloadingEnabled -J-Djava.net.preferIPv4Stack=true"
当我启动该应用程序时,
堆内存为 120MB / 2048MB ,任务管理器中“特定进程”(在“内存”列-“进程”选项卡中)显示的内存为 680MB ,
现在我要执行繁重的任务,
我的堆看起来像这样,
如图所示,启动应用程序后,运行了一个繁重的任务,完成后又回到了先前的状态。
但是,在任务管理器(物理内存)中,该进程已从680MB变为2300MB,并且没有下降,
我无法理解这里的关系。
为什么释放堆内存时,物理内存没有减少? -是因为分配内存的成本很高,并且分配的时间不是立即释放的吗?