Ticket #6894 (new defect)

Opened 7 months ago

Last modified 5 weeks ago

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

Reported by: guest Owned by: toonetown
Priority: highest Milestone: 1.3
Component: DojoX Grid Version:
Severity: major Keywords: grid paging memory node
Cc: anthony.fryer@…

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

Changed 6 months ago by toonetown

  • milestone set to 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.

Changed 3 months ago by BryanForbes

  • milestone changed from future to 1.3

Changed 3 months ago by BryanForbes

  • priority changed from normal to high
  • severity changed from normal to major

Changed 5 weeks ago by toonetown

  • owner changed from BryanForbes to toonetown

Reassigning to me

Changed 5 weeks ago by toonetown

  • priority changed from high to highest
Note: See TracTickets for help on using tickets.