Nodejs 进程是否可以使用比可用物理内存更多的内存(通过使用交换内存)?
Can a Nodejs process uses more memory than the available physical memory (by using swap memory)?
我正在使用 Nodejs。我打算增加 Nodejs 应用程序的内存限制。
在谷歌搜索时,我发现了这篇文章:Increasing Node.js memory limits。
作者说他的服务器只有 8GB
的物理内存,但是他的 Nodejs 进程正在使用 28GB
的内存。我假设它正在使用 physical + swap
内存。文章还提到,著名 Nodejs 框架的开发者对其 Nodejs 使用 15GB
内存限制。
我尝试从其他编程语言中搜索一些示例。在 Java 中,JVM 堆使用交换内存似乎不是一个好主意。参考这篇文章:,为JVM堆使用交换内存会产生大问题。
我不确定 JVM GC 和 Nodejs GC 之间是否有任何区别。
Nodejs 进程是否可以使用比可用物理内存更多的内存(通过使用交换内存)?
Can a Nodejs process uses more memory than the available physical memory (by using swap memory)?
是的,可以。像任何其他过程一样。它由 OS 管理。该进程要求一个新页面,它甚至不知道它是否已交换。
不过我不推荐它,因为它会导致性能下降。磁盘(甚至 SSD)比 RAM 慢几个数量级。出于这个原因,我个人根本不喜欢在我的系统上使用任何交换内存。不幸的是 Linux 这意味着我不能挂起到磁盘,但我可以忍受。
当您检查内存使用情况时,您实际看到的并不总是那么明显。一些共享库可以同时映射到多个进程,您看到的用法并不总是真实的。一个进程也可以要求大量内存,但这并不意味着它得到了它。实际物理内存(RAM 或交换区)可以在第一次实际访问给定页面时映射,而不是在请求时映射。它已完成页面错误。
有关详细信息,请参阅:
我正在使用 Nodejs。我打算增加 Nodejs 应用程序的内存限制。
在谷歌搜索时,我发现了这篇文章:Increasing Node.js memory limits。
作者说他的服务器只有 8GB
的物理内存,但是他的 Nodejs 进程正在使用 28GB
的内存。我假设它正在使用 physical + swap
内存。文章还提到,著名 Nodejs 框架的开发者对其 Nodejs 使用 15GB
内存限制。
我尝试从其他编程语言中搜索一些示例。在 Java 中,JVM 堆使用交换内存似乎不是一个好主意。参考这篇文章:
我不确定 JVM GC 和 Nodejs GC 之间是否有任何区别。
Nodejs 进程是否可以使用比可用物理内存更多的内存(通过使用交换内存)?
Can a Nodejs process uses more memory than the available physical memory (by using swap memory)?
是的,可以。像任何其他过程一样。它由 OS 管理。该进程要求一个新页面,它甚至不知道它是否已交换。
不过我不推荐它,因为它会导致性能下降。磁盘(甚至 SSD)比 RAM 慢几个数量级。出于这个原因,我个人根本不喜欢在我的系统上使用任何交换内存。不幸的是 Linux 这意味着我不能挂起到磁盘,但我可以忍受。
当您检查内存使用情况时,您实际看到的并不总是那么明显。一些共享库可以同时映射到多个进程,您看到的用法并不总是真实的。一个进程也可以要求大量内存,但这并不意味着它得到了它。实际物理内存(RAM 或交换区)可以在第一次实际访问给定页面时映射,而不是在请求时映射。它已完成页面错误。
有关详细信息,请参阅: