Also, make sure that the stall is actually because you're swapping memory & not because your trying to repaint a large board (look at your OS resource monitor). You should see almost no CPU usage in user-space if it's memory swapping.
If it's the CPU, you'll want to do the traditional trick of doing your work in multiple steps: private static final STEP_SIZE = 100; Timer repainter = new Timer() { public GameResult result; private GameResult current; private int row = 0; private int col = 0; public void run() { int steps = 0; if (current != result) { row = col = 0; current = result; } ResultGamePlan rGamePlan = current.getGamePlan(); for (; steps < STEP_SIZE && row < gamePlan.getRowCount(); row++) { for (; steps < STEP_SIZE && col < gamePlan.getColumnCount(); col++, steps++) { if (rGamePlan[col][row].equals("B")) //paint black else if (rGamePlan[col][row].equals("W")) // paint white else // paint green } } if (row == gamePlan.getRowCount() && col == gamePlan.getColumnCount) { // finished painting cancel(); current = null; } }; /// when you get an update from server repainter.result = serverResult; repainter.scheduleRepeating(10); That'll actually make things slower in terms of throughput, but the UI will remain responsive, so it'll seem faster. Another thing you can try is to use initialize like in my previous e-mail, except use HTML instead of Image. Then cache the HTML representation of the images in 3 global variables (getHTML of AbstractImagePrototype). Then when you iterate, simple call setHTML - that should be even faster & should give you pretty good memory savings. On Thu, Mar 19, 2009 at 8:24 PM, Vitali Lovich <vlov...@gmail.com> wrote: > Try doing an initialization first: > for (int i = 0; i < gamePlan.getColumnCount(); i++) > for (int j = 0; j < > gamePlan.getRowCount(); j++) > > gamePlan.setWidget(i,j, new Image()); > > Then in your actual paint do: > imagePrototype.applyTo(gamePlan.getWidget(i, j)) > > > On Thu, Mar 19, 2009 at 6:30 PM, GhostNr1 <ghost...@gmail.com> wrote: > >> >> Hi! >> >> I'm trying to use ImageBundle to paint all my images. That's work very >> good except from one thing. >> >> Every 3 secound I poll the server to check if an ohtello plan have >> changed and then I try to paint it >> >> for (int i = 0; i < >> gamePlan.getColumnCount(); i++) { >> for (int j = 0; j < >> gamePlan.getRowCount(); j++) { >> if >> (result.getGamePlan()[i][j].equals("B")) { >> >> gamePlan.setWidget(i,j, blackImgPrototype.createImage()); >> } else if >> (result.getGamePlan()[i][j].equals("W")) { >> >> gamePlan.setWidget(i,j, whiteImgPrototype.createImage()); >> } else { >> >> gamePlan.setWidget(i,j, greenImgPrototype.createImage()); >> } >> } >> } >> >> I use that one, the problem is I use blackImgPrototype.createImage() >> so it create 64 new images every 3:rd secound and the memory stall. >> Any suggestion how I can fix this. >> >> Image black = >> blackImgPrototype.createImage(); >> Image white = >> whiteImgPrototype.createImage(); >> Image green = >> greenImgPrototype.createImage(); >> for (int i = 0; i < >> gamePlan.getColumnCount(); i++) { >> for (int j = 0; j < >> gamePlan.getRowCount(); j++) { >> if >> (result.getGamePlan()[i][j].equals("B")) { >> >> gamePlan.setWidget(i,j, black); >> } else if >> (result.getGamePlan()[i][j].equals("W")) { >> >> gamePlan.setWidget(i,j, white); >> } else { >> >> gamePlan.setWidget(i,j, green); >> } >> } >> } >> >> I have tryed that but then it only paint one black one white and one >> green image. >> >> Thx for help >> >> >> > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to Google-Web-Toolkit@googlegroups.com To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/Google-Web-Toolkit?hl=en -~----------~----~----~----~------~----~------~--~---