[Mono-bugs] [Bug 467418] New: ListView in VirtualMode uses too much memory and is slow

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Mon Jan 19 13:33:06 EST 2009


           Summary: ListView in VirtualMode uses too much memory and is
    Classification: Mono
           Product: Mono: Class Libraries
           Version: unspecified
          Platform: x86-64
        OS/Version: Ubuntu
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: Windows.Forms
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: mono at esar.org.uk
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---

Created an attachment (id=266059)
 --> (https://bugzilla.novell.com/attachment.cgi?id=266059)
test app

User-Agent:       Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:
Gecko/2008121623 Ubuntu/8.10 (intrepid) Firefox/3.0.5

When the list view is in virtual mode it still allocates space internally in
the items_location, items_matrix_location and item_index_matrix arrays for each
virtual item. As a result the list view uses almost as much memory in virtual
mode as it does when the items are added to the ListView.Items collection.

In addition, whenever the VirtualListSize property is changed the list view
requests all list items one by one to add them to the above arrays. As a
result, if the application is adding items to the list on the fly then the list
will ask for all the items over and over again.

Also the FirstVisibleItem property which is used while drawing does a linear
scan of the items, which with a huge number of items takes a very long time.

Reproducible: Always

Steps to Reproduce:
1. Add a ListView to a form
2. Set VirtualMode to true
3. Implement RetrieveVirtualItems
4. Set VirtualListSize to 1000000
5. Attempt to navigate the list, especially in LargeIcon view
Actual Results:  
The application stops responding, actually in LargeIcon view my whole ubuntu
desktop stops responding.

Expected Results:  
Should be able to navigate and switch views without any problems.

I've attached a test application that demonstrates the problem. Compile with:
gmcs /r:System.Windows.Forms.dll /r:System.Drawing virtlist.cs

I've created a patch which fixes the problems, which I will attach.

Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.

More information about the mono-bugs mailing list