操作系统运行 10 个虚拟机 JVM。事实上,大多数人什么都不做——有时只是做一份工作。每个进程分配 600MB 的系统内存。我知道实际上最多可以使用 100 MB。每个进程的剩余 500 MB 是由 JVM(OldGen 等)管理的内存。不幸的是,我的系统只有 2GB 的 RAM,因此大部分内存分配到了交换区。这意味着当时间到了其中一台机器——第一台机器上,swap 会被读取到系统内存数十秒。
有没有什么办法可以强制JVM在完成任务后向操作系统释放内存?例如,GC 将每 1-5 分钟运行一次,因此进程内存已被释放给系统。
我正在使用:Linux x86_64 SMP、Java HotSpot (TM) 64-Bit Server VM 1.6.0