【发布时间】:2014-07-18 14:29:53
【问题描述】:
在java程序中经常出现Out-of-memory错误。我的问题很简单:当超过内存限制时,为什么 java 直接杀死程序而不是将其交换到磁盘?我认为现代操作系统中经常使用内存分页/交换策略,而像 c++ 这样的编程语言肯定支持交换。谢谢。
【问题讨论】:
-
因为 JVM 不会超过你为它分配的内存。这就是 -Xmx 参数的用途(默认值是 1G 或总内存的 1/4)。
-
“C++ 绝对支持交换”。我很想看看这样的例子。
-
@Gimby 我想我找到了这个函数:man7.org/linux/man-pages/man2/mmap.2.html 它可以让你映射一个文件,这是类似的。
-
内存映射确实是主要操作系统(甚至Windows)提供的一种技术。不是 C/C++。
标签: java out-of-memory paging