Wicket AbstractAjaxTimerBehavior和performance

Wicket AbstractAjaxTimerBehavior和performance,ajax,wicket,Ajax,Wicket,我在Wicket应用程序中使用AbstractAjaxWicketBehavior,当出现更多AJAX调用时,它的性能似乎会随着时间的推移而下降。当页面在没有AJAX的情况下刷新时,性能再次良好。我想知道这是一件正常的事情还是可能是某种内存泄漏?我不能简单地附加代码,因为它分布在更多的类中,需要花费太多的精力才能理解,但简而言之,我想这样做: 创建并启动计时器 重复一些代码10x 停止计时 将一些值设置为属性 ajax刷新(导致某些组件的显示/隐藏) 然后再做一次同样的事情(形下无限次) 即使我

我在Wicket应用程序中使用AbstractAjaxWicketBehavior,当出现更多AJAX调用时,它的性能似乎会随着时间的推移而下降。当页面在没有AJAX的情况下刷新时,性能再次良好。我想知道这是一件正常的事情还是可能是某种内存泄漏?我不能简单地附加代码,因为它分布在更多的类中,需要花费太多的精力才能理解,但简而言之,我想这样做:

  • 创建并启动计时器
  • 重复一些代码10x
  • 停止计时
  • 将一些值设置为属性
  • ajax刷新(导致某些组件的显示/隐藏)
  • 然后再做一次同样的事情(形下无限次)

    即使我使用100毫秒的恒定更新间隔,该流的每次重复都会变慢

    由于计时器是一种行为,不允许重新启动或重用,因此每次都会将其作为新实例创建并附加到表单组件

    计时器如下所示:

    static int count = 0
    new AbstractAjaxTimerBehavior(Duration.milliseconds(100)) {
     // do some code
     count++
     if(count == 10) {
      stop();
      // do some code
     } 
    }
    
    此行为将附加到面板内的表单,单击AjaxLink后,表单将刷新(添加到AjaxRequestTarget)。每次我在添加新行为之前从表单组件中删除旧计时器时


    一切正常,但这个过程的每一次重复都会运行得较慢(第一次是完美的,第二次也是100毫秒左右,但之后会变慢(重复10或15次后,刷新间隔约为1秒),应用程序中的所有其他AJAX调用也会明显变慢),因此我怀疑内存泄漏。。。有什么明显的原因吗?或者有什么方法可以让wicket定时器更适合我?谢谢你的建议。谢谢。

    我们的wicket应用程序在每次AJAX请求时也会变得更慢。我不确定这是否是完全相同的问题,或者是否与AjaxTimerBehavior有关,但是:

    我们发现其中一个原因是由于HTML替换而在浏览器中出现的伪泄漏。显然,nrowser在重新加载页面之前无法释放内存

    您可以使用任务管理器(或其他工具)监视浏览器内存,并观察每次AJAX请求时内存的增加以及在整个页面重新加载(F5)时内存的释放情况。尤其是在IE方面

    不过,我们用AJAX请求替换了大量HTML