【问题标题】:Memory usage of MyFaces and RichfacesMyFaces 和 Richfaces 的内存使用情况
【发布时间】:2012-03-29 10:14:46
【问题描述】:

这不是一个问题...如果这违反了规则,我很抱歉,但我发现谷歌对这个网站的评价很高,对我来说,这些信息会有很大帮助。如果不可接受,我们可以删除此消息并且“伤害”保持有限。

我从带有 RichFaces-3.3.3 的 MyFaces-2.0.10 切换到带有 RichFaces-4.2-Final 的 MyFaces-2.1.6,我们的应用程序的内存使用量大幅下降。从每个会话惊人的 50MB+ 到几乎没有。我们过去每 20 个用户消耗至少 1GB,而对于任何数量的用户(

迁移工作量很大,两个程序员花了大约 4 个月(每周总共 30 小时)来学习新方法并将其实施。但这显然取决于项目的规模。我们不得不处理现在已修复的 RF 和 MyFaces 中的许多错误/问题。我认为用我现在所知道的,我可以在三分之一的时间内做到这一点。 BalusC 会在一周内完成 :)

所以我的建议是,如果您有内存问题,开始升级可能是个好主意。总有一天要完成,为什么不现在呢?

MAG, 米洛

【问题讨论】:

  • 一个问题可能是,为什么您的应用每个会话需要 50MB?
  • 我们已经调试了大约三年,并没有进一步发现它是在会话中而不是在我们的应用程序中。当会话被销毁时,内存再次被释放。而且,会话会随着时间的推移而增加。第一次登录只需要几个 kB,但在应用程序中工作一天后,它增加了很多。单击应用程序并不会触发内存使用量的增加。它确实需要时间。
  • 服务器或客户端状态保存之间的内存使用没有改变...

标签: jsf-2 richfaces


【解决方案1】:

很高兴人们开始注意到 MyFaces Core 2.1.6 中的重大改进。确实做了很多很酷的小技巧,但只在 2.1.6 中添加了最新的几行,最终效果是内存使用率/代码速度/会话大小有很大的提高。 MyFaces Core 2.1.7 也将包含另一项改进,敬请关注MyFaces Team Twitter

【讨论】:

    【解决方案2】:

    自 JSF 2.0 以来,状态保存得到了改进。引入了“部分状态保存”,它可以只保存相关组件(UIFormUIInput 等)的状态,而不是 整个 组件树 (UIViewRoot)。由于视图状态默认保存在服务器端会话中,这确实会降低内存使用量,如果您有相对较大的视图。

    虽然专为 JSF 1.x 设计的 RichFaces 3.3.x 可以在 JSF 2.0 上运行(带有一些 hack),但它根本没有使用新的 JSF 2.0 部分状态保存。专为 JSF 2.x 设计的 RichFaces 4.x 支持它,因此如果操作正确,您肯定会看到内存使用量下降。

    为了进一步改进,您可以考虑将状态保存方法设置为client,只增加最少的网络带宽。这样,内存使用将进一步减少,任何潜在的ViewExpiredException 都将被消除。

    另见:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多