我试图弄清楚为什么同一个Web应用程序在 Ubuntu Linux 16 中使用的内存比在 Windows 10 中运行的内存多。有什么理由吗?我一直认为Linux在服务器模式下运行任何应用程序都更快更轻。顺便说一句,两个操作系统(OS)都是64位。
请参阅下面的截图和消耗的内存。
Windows 10 Ubuntu Linux 正如您在任务管理器中看到的那样,Linux正在使用更多的东西来运行相同的应用程序。我还尝试在VM 64位中运行Spring Boot,这需要比在32位简单VM中运行更多的内存。
Windows是否更适合使用Spring Boot管理Java应用程序?
答案 0 :(得分:2)
正如评论中所提到的,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