Opened 11 years ago

Closed 10 years ago

Last modified 10 years ago

#6894 closed defect (fixed)

Grid paging doesn't invalidate or recycle pages resulting in excessive memory usage when scrolling

Reported by: guest Owned by: Nathan Toone
Priority: blocker Milestone: 1.4
Component: DojoX Grid Version:
Keywords: grid paging memory node Cc: anthony.fryer@…
Blocked By: Blocking:

Description

When scrolling, the grid dynamically creates 'pages' of row data on the fly which is good. The problem is, the page creation appears to be unlimited. In other words, if i have a table with thousands of rows and scroll from top to bottom, every dynamically created page will be held in memory when I reach the bottom of the table. Since pages contain arrays of dom nodes, if I have a 'really' big table the grid uses excessive amounts of memory to hold all these pages as the user scrolls. Browser performance starts to suffer.

This can be seen in sieve by using the grid to view a store with many rows. As you scroll and each page is fetched, memory and node usage increases linearly.

A more efficient approach would be to limit the number of pages stored in memory in a lru queue or something similar. As the user scrolls, old pages no longer visible should be invalidated to free up resources for new pages that need to be loaded.

Change History (8)

comment:1 Changed 11 years ago by Nathan Toone

Milestone: future

The issue to consider here as well is balancing the need to keep pages in memory, in case you scroll back to an already-loaded page (eliminating the need to rerender), with the need to keep the grid lightweight.

comment:2 Changed 11 years ago by Bryan Forbes

Milestone: future1.3

comment:3 Changed 11 years ago by Bryan Forbes

Priority: normalhigh
severity: normalmajor

comment:4 Changed 11 years ago by Nathan Toone

Owner: changed from Bryan Forbes to Nathan Toone

Reassigning to me

comment:5 Changed 11 years ago by Nathan Toone

Priority: highhighest

comment:6 Changed 10 years ago by Nathan Toone

Milestone: 1.3future

comment:7 Changed 10 years ago by Nathan Toone

Resolution: fixed
Status: newclosed

Setting the keepRows value will invalidate the pages that you are no longer viewing.

Fixed on small issue with the keep info in [17347]

comment:8 Changed 10 years ago by Nathan Toone

Milestone: future1.4
Note: See TracTickets for help on using tickets.