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

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

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

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

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


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

你的笔记本电脑运行Wi吗ndows?我假设答案是肯定的。Windows任务管理器中报告的内存值与Linux报告的总驻留内存不同

我不相信Hello World占用了900 MB的内存。如果是的话,那说明报告的是JVM内存,而不是你的应用程序

您是否在像Tomcat或JBOSS这样的JavaEE应用服务器上运行此应用程序?这将带来很大的不同


最好的建议是搜索其他显示如何使用Linux工具(如nmap)计算内存消耗位置的问题。

使用的数量取决于JVM、使用的参数以及其他因素。是否提供特定的-Xmx/-Xms参数?可能是JVM的保留内存,而不是y消耗的实际内存我们的应用程序。你在笔记本电脑上尝试过
java-server
吗?请看,但关键是,在服务器模式下运行会在正常服务器操作下产生一些开销。(另一个想法)向asslias说:不,我没有向m0skit0提供任何这样的参数:如果它只被JVM占用,那么我想它不会一次又一次地为该程序的每个实例占用相同的内存。不,我在笔记本电脑上使用Linux。对于同一个程序,我的笔记本电脑大约需要30到40 MB的内存,但在服务器上需要700到800 MB以上的内存r、 是的,甚至我看到Hello word程序的响应都感到震惊。但它确实需要900 MB的内存。你是否为笔记本电脑和电脑都打开了-server选项?我知道有一个web应用程序在Red Hat Linux上运行,打开了-server,消耗了2.8GB的总驻留内存。它在JBOSS 5.1.1上运行。如果我对它进行了配置,我会注意,该应用程序使用的内存很少。它是JBOSS,它映射到驻留内存、线程等的JAR。比你的应用程序运行的更多。同一个应用程序在Tomcat 6.x上运行,占JBOSS 5.1.1总内存的40%。不,我确实打开了服务器选项。在这种情况下,这有关系吗?