在这种情况下,java 堆会抖动到磁盘吗?

Will java heap thrash to disk in this scenario?

我可以看到我分配的堆是 1312MB,使用的是 1300MB。这是否意味着 JVM 正在将 12MB 内存分配到磁盘?

如果您已经使用了 1312 MB 堆中的 1300 MB,这意味着它即将执行 GC 来清理 space。

JVM 不会将任何内容交换到磁盘。这是操作系统的工作,JVM 不知道这是否发生。

顺便说一句:您希望避免交换堆的任何部分,因为 GC 假设内存是随机访问的。如果在交换堆时有 GC,机器可能变得不可用。简而言之,始终使您的堆足够小以使其永远不会交换。

"see" 是什么意思?

我假设您正在通过 jstat 查看,如果您指的是 OC(旧代容量)和 OU(使用情况),则意味着您的进程几乎耗尽了旧代的所有内存生成部分。这意味着您只有更多的 12MB 可用空间(查看完整 GC 的数量,可能是每秒 运行)