Java 类在 Linux 服务器中消耗大量内存?

标签 java linux vps

我当时正在研究一种 SMTP 协议(protocol),我用 java 制作并成功运行。它在我的笔记本电脑中消耗了大约 20 到 30 MB。后来我决定让协议(protocol)在互联网上生效。我购买了服务器(VPS)、域名。这让我付出了很多代价。但是,当我试图在该服务器上运行我的程序时,我感到非常震惊,因为我的程序为我运行的每个类消耗了大约 800 到 900 MB。我认为这可能是我的编程错误,我尝试了很多从问题中恢复但我做不到。后来我的一个 friend 建议我在同一台服务器上测试一个简单的 Hello word 程序,我非常震惊,甚至那个程序占用了我总 RAM 的 900 MB。

这是什么样的问题? 是那些服务器的故障,还是它们的操作系统和内核版本的故障? 是 JVM 与 Linux 内核还是较旧的 Linux 内核的问题。 我什至尝试过旧的 JVM,但没有用。 :(

我尝试了大多数流行的 Linux 版本,但它在所有 Linux 版本上的工作原理和问题完全相同。在所有情况下都在消耗大量内存。 (他们都有 Linux 内核 2.6.xx)

但它在我的笔记本电脑中运行非常流畅并消耗了预期的内存。 (大约 30 到 50 Mb)。我在笔记本电脑上使用 Linux。但不同的是我的内核是在 3.1.xx 以上。这可能是问题吗?我对我的服务器的行为感到非常失望,并因此损失了很多钱。请任何人告诉我可能的解决方案,它可能是 Linux 内核的问题还是它在我的编程中的问题。

最佳答案

您的笔记本电脑运行的是 Windows 系统吗?我假设答案是肯定的。您在 Windows 任务管理器中看到的报告的内存值不是 Linux 报告的总驻留内存。

我不认为 Hello World 占用了 900 MB。如果是,则说明报告的是 JVM 内存,而不是您的应用。

您是否在 Tomcat 或 JBOSS 等 Java EE 应用服务器上运行此应用?这确实会产生很大的不同。

最好的建议是在 SO 中搜索其他问题,这些问题展示了如何使用 nmap 等 Linux 工具找出内存消耗的位置。

关于Java 类在 Linux 服务器中消耗大量内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15602241/

相关文章:

java - Apache 服务器 RewriteRule 到 Tomcat war - 从 url 中删除应用程序名称

c - 在连接失败时重用套接字描述符

docker - 对整个服务器使用docker镜像

linux - 无法在 WSL 上使用 Bash 进行 SSH

linux - 在 Amazon EC2 实例上安装 librsync

ruby-on-rails - 需要关于将我的第一个 Rails 应用程序部署到 mediatemple (dv) 的建议

linux - Apache 虚拟主机

java - 正确安装 Java 9 和 Java 8

java - 减少加载 Gmail header 所需的时间

java - 如何检查输入元素是否在表单元素内