我试图弄清楚为什么同一个 Web 应用程序在 Ubuntu Linux 16 中使用的内存比在 Windows 10 中运行的内存要多。有什么理由吗?我一直认为 Linux 在服务器模式下运行任何应用程序都更快、更轻。顺便说一下,两个操作系统 (OS) 都是 64 位。
请参阅下面的屏幕截图和消耗的内存。
Windows 10 Ubuntu Linux 正如您在任务管理器中看到的那样,Linux 使用更多的 morey 来运行相同的应用程序。我还尝试在 64 位 VM 中运行 Spring Boot,这比在简单的 32 位 VM 中运行需要更多内存。
Windows 使用 Spring Boot 管理 Java 应用程序是否更好?
最佳答案
正如评论中提到的,Windows 和 Linux 有不同的内存管理系统。它们的内存使用情况可能不同的原因有多种,例如,如果 Windows Java 使用由另一个应用程序加载的动态链接库 (DLL),则它可能不会在内存分配计算中包括共享库。此外,在 Windows 和 Linux 上实现 JVM 及其 API 所需的代码可能有所不同。
当程序运行时,Windows 和 Linux 可能会根据操作系统配置和内核编程方式将 JVM 的不同部分分页或交换到磁盘。
您最好的选择是通过 VisualVM 等 Java Profiler 运行代码,以尝试获取有关应用程序各个部分使用了多少内存的更多信息。 Windows 计算程序的实际内存使用情况可能非常棘手,请参阅 https://superuser.com/questions/895168/how-to-measure-total-ram-usage-of-a-program-under-windows
关于java - Spring Boot 在 Linux 中运行比 Windows 使用更多的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38687921/