Hi:
I'm not sure whether this behavior is normal or not, so I'm going to
describe it and I hope someone can tell me if I'm doing something wrong or
if there's just nothing wrong!

In my app I found out that each time a request is made, old instances of a
page remain in memory, and get accumulated in time (I noticed this behavior
by looking at the "All instances" feature from eclipse debug's perspective).
I searched the code for bad practices like anonyomus Model classes, but I
didn't find those kind of thins. So finally I created a new simple project
to test whether this behaviour repeated there too, and I found out that it
did!

Here's the new simple project code (wicket 1.3.5, tomcat 6, eclipse
galileo):

public class MyApp extends WebApplication {
@Override
 public Class getHomePage() {
return MyPage.class;
}
}

public class MyPage extends WebPage {
private String text;
public MyPage() {
 this("<notext>");
}
public MyPage(String textt) {
 super();
this.text = textt;
Form form = new Form("form"){
 private static final long serialVersionUID = -3566834353426372805L;
@Override
 protected void onSubmit() {
setResponsePage(new MyPage2(text));
}
 };
form.add(new TextField("text", new PropertyModel(this, "text")));
 form.add(new Button("accept"));
this.add(form);
}
}

<Class MyPage2 does the exact same thing, except it sets MyPage as the
response page.>

When debugging (with a breakpoint in MyPage's constructor), every time a new
page is instanciated, I see that the old instances of that page remains in
memory. Using the "All references" feature I "walked" through the
reference-path, and I reached a weakReference to this page from a
"SerializedPagesCache$SerializedPageWithSession" instance (I had to stop
there because it was driving me crazy). (Of course I have no idea whether
this is normal or not, I'm just giving more info)

Anyway, can anyone tell me what's wrong? Or is this a expected behavior and
sometime later this old instances will be eliminated from the jvm?

Thanks in advance,

Esteban

Reply via email to