我需要有关如何减少网络应用程序内存使用量的帮助。这样我就可以将更多内容放入我的网络服务器中。
所以我正在使用 JSF 2.0 构建一个 Java Web 应用程序,该应用程序在 eclipse helios 中开发并在 Apache tomcat 服务器上运行。我有一个带有 tomcat 的专用虚拟服务器,我也在其中部署了这些 war 文件。 webApp 的大小约为 35MB(它有很多 jar 等)但是当我将它部署到我的 tomcat 网络服务器时,我可以看到它需要大约 300MB 的 RAM,这正常吗?我的专用服务器只有 2GB 的 ram,通常有 1 个可以使用。所以我一部署 3 个应用程序就收到 OOM 错误,我收到了 permgen OOM 和 out of swamp Memory 错误;为了解决这个问题,我将我的 MaxPermGen 提高到大约一个演出并重新启动服务器以取回一些沼泽空间。所以我尝试部署较小的旧应用程序(大约 15MB),它们占用的内存更少。如果我有 1 GB 的内存,我希望能够在我的网络服务器中安装更多应用程序而不会出现任何 OOM 错误。
现在我找到了this stack overflow Question , 那可以适用于我的情况吗?如果是这样,tomcat 服务器中的公共(public)文件夹是哪些?以前有人这样做过,或者有其他更有效但不那么复杂的方法吗?
任何想法和/或评论都非常感谢。谢谢!
我的
最佳答案
I deploy these war files. the webApp is about 35MB in size ( it has a lot of jars and such)
只有您使用的文件才会占用内存。删除不使用的类会节省磁盘空间,但不会节省内存。
but when I deploy it to my tomcat webserver, I can see it takes about 300MB of RAM, is this normal?
如果您的服务器有 300 Mb 空闲空间,它将全部使用。如果您有 3 GB 的空闲空间,它也可能会使用所有这些空间。在实际使用服务器并执行 Full GC 后,您需要查看使用了多少。
If I have 1 GB of ram I want to be able to fit more apps into my webserver without getting any OOM Errors.
您需要确定每个应用程序真正需要多少内存。或者您需要购买更多内存,因为 1 GB 的成本约为 20 美元。 (我假设它是一个托管解决方案,内存成本要高得多;)
关于java - 如何让war文件占用更少的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12162654/