java web app的内存消耗(300MB太高?)

时间:2012-03-05 21:02:24

标签: java spring hibernate memory velocity

我可以选择关于内存问题的大脑吗?

我的java应用程序,不是很大(如14000 LOC)使用大约300MB的内存。它在带有MySQL数据库的Tomcat上运行。我正在使用Hibernate,Spring和Velocity。

它似乎没有任何泄漏,导致它稳定和300MB,而不会进一步增长。 (另外,我做了一些剖析。)然而,我的团队对它所使用的空间量有一些担忧。这看起来很高吗?你对缩小它的方法有什么建议吗?

任何想法都表示赞赏。

4 个答案:

答案 0 :(得分:4)

LOC的数量并不表示Java应用程序将使用多少堆;从一个到另一个没有相关性。

300MB对于缓存数据的服务器应用程序来说并不是特别大,但对于没有持有任何类型的缓存或会话数据的应用程序来说有点大(但由于这包括Web服务器本身,300MB通常是合理的)

答案 1 :(得分:2)

代码量(LOC)很少会对应用程序的内存使用产生太大影响,毕竟,存储的变量和对象占用了大部分内存。对我来说,300兆字节听起来并不多,但当然这取决于您的具体使用场景:

  • 生产服务器有多少内存?
  • 有多少用户使用了这么多内存?
  • 每个用户会话的内存使用量增长了多少?
  • 您希望在生产使用中同时访问应用程序的用户数量是多少?

基于这些,您可以进行一些计算,例如。您的生产环境是否已准备好处理您期望的用户数量,您是否需要更多硬件,您是否需要将某些数据序列化到磁盘/数据库等。

答案 2 :(得分:0)

我不能做出任何承诺,但我认为你不必担心。我们通过Glassfish运行一些Web应用程序,使用hibernate,每个使用大约800-900MB的开发,通常会有2个域运行每个大小。

答案 3 :(得分:0)

如果您确实需要减少占地面积,至少要确保使用的是Velocity 1.6或更高版本。 1.5浪费了相当多的记忆。