我有一个问题。假设我有两个参数传递给 JVM: -Xms256mb -Xmx1024mb 在程序开始时分配了 256MB。接下来,创建一些对象,JVM 进程尝试分配更多内存。假设 JVM 需要分配 800MB。Xmx 属性允许这样做,但系统上当前可用的内存(比如说 Linux/Windows)是 600MB。是否有可能抛出 OutOfMemoryError ?或者也许交换机制会起作用?
我的第二个问题与 GC 算法的质量有关。假设我有 jdk1.5u7 和 jdk1.5u22。是否有可能在后一个 JVM 中内存泄漏消失并且 OutOfMemoryError 不会发生?最新版本的GC质量能更好吗?