我正在开发一种SMTP类型的协议,我在java中创建并成功运行。我的笔记本电脑耗费了大约20到30 MB。后来我决定在互联网上制作协议。我购买了服务器(VPS),域名。它花了我很多钱。但当我试图在该服务器上运行我的程序时,我感到非常震惊,我的程序每运行一个类消耗大约800到900 MB。我认为这可能是我的编程错误,我尝试了很多从问题中恢复,但我不能。后来我的一个朋友建议我在同一台服务器上测试一个简单的Hello字程序,我感到非常震惊,甚至那个程序吃掉了我总RAM的900 MB。
它会出现什么样的问题? 它是那些服务器或其操作系统和内核版本的错误吗? 是Linux内核或旧Linux内核的JVM问题。 我甚至尝试使用较旧的JVM但没有用。 :(
我尝试了大多数流行的Linux版本,但它的工作方式相同,并且在所有Linux版本上都有完全相同的问题。在所有情况下都吃着巨大的记忆。 (他们都有Linux内核2.6.xx)
但它在我的笔记本电脑中运行非常顺畅并消耗了预期的内存。 (约30至50 Mb)。我在笔记本电脑中使用Linux。但区别在于我的内核高于3.1.xx。这可能是问题吗?我对服务器的行为非常失望,并且已经损失了很多钱。请有人告诉我可能的解决方案,可能是Linux内核的问题或者我编程中的问题。
答案 0 :(得分:0)
您的笔记本电脑是否在运行Windows?我会假设答案是肯定的。您在Windows任务管理器中报告的内存值不是Linux报告的总驻留内存。
我不相信Hello World占用900 MB。如果是,那就告诉我正在报告JVM内存,而不是你的应用程序。
您是否在Tomcat或JBOSS等Java EE应用服务器上运行此应用?这确实会产生很大的不同。
最好的建议是搜索SO以寻找其他问题,这些问题展示了如何使用像nmap这样的Linux工具来确定消耗内存的位置。