1

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

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

我尝试了大多数流行的 Linux 风格,但它的工作原理相同,并且在所有 Linux 风格上都存在完全相同的问题。在所有情况下都在吃巨大的内存。(他们都有 Linux 内核 2.6.xx)

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

4

1 回答 1

0

Is your laptop running Windows? I'll assume that the answer is yes. The memory values you see reported in Windows Task Manager are not what Linux reports for total resident memory.

I don't believe that Hello World is taking up 900 MB. If it is, that tells me that the JVM memory is being reported, not your app.

Are you running this app on a Java EE app server like Tomcat or JBOSS? That will make a very big difference indeed.

The best advice is to search SO for other questions that showed how to use Linux tools like nmap to figure out where memory is being consumed.

于 2013-03-24T18:25:25.750 回答