【发布时间】:2011-12-09 03:49:48
【问题描述】:
我正在考虑将 Timer 类用于大量 TimerTask(比如一两百万)。 Timer 的堆实现是基于数组的,由于没有办法为数组预留空间,问题来了,当内存碎片化时,Java 如何处理大的连续内存块的分配(本例中为数组)?
如果没有足够大的可用片段,是否总是抛出 OutOfMemoryError ?或者当可用内存总量足够时,我可以期望 JVM 有某种内存碎片整理策略吗?
编辑: 我的问题似乎没有独立于 JVM 实现的答案。就我而言,JVM 实现是 OpenJDK 版本 14.0-b16(根据 java.vm.name 和 java.vm.version 系统属性)。
【问题讨论】: