Project JEDI - Issue Tracker
Mantis Bugtracker

Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0003602 [JEDI VCL] 00 JVCL Components major always 2006-03-21 13:25 2006-03-22 02:44
Reporter Mongoose View Status public  
Assigned To AHUser
Priority normal Resolution fixed  
Status resolved   Product Version 3.10
Summary 0003602: Memory leak in TJvListView
Description I worked on one project and spend few days on searching the damn memory leaks. Finally I found out that main source was TJvListView.
When I update subfields in the way:
JList.Items[i].SubItems[0] := DateToStr(Now + random(500)); // i from 0 to 100
program works fine, but "Process Explorer" indicates increase in total memory usage of my program. I've took original TListView and compared with TJvListView. As a result: TListView works fine and doesn't generate any additional memory, meanwhile TJvListView gets 4-6 Kb during every execution of cycle. Small investigation showed some new "features":
1) memory leaks appear when we just click on row, or we use arrow keys to navigate through it.
2) memory leaks don't appear, when TJvListView is not visible, either by property "Visible" nor hided by other controls, forms e.g.
3) they don't seem to stop
4) TListView works without that leaks.
Additional Information There are a test project in attachment, where TListView and TJvListView are compared and use absolutely same code.
One define will help to easily switch between them.

IDE: Borland Studio 2006 Delphi Win32
Tags No tags attached.
Attached Files zip file icon ListMemoryLeak.zip [^] (12,313 bytes) 2006-03-21 13:25

- Relationships
related to 0003839resolvedobones GDI obj leak 

-  Notes
(0008714)
AHUser (developer)
2006-03-22 02:44

Fixed in CVS.

The TListView creates GDI fonts but does not release them because (=> GDI handle leak) the cdPostPaint notify is never sent. That's because TJvListView overwrites IsCustomDraw but does not want the cdPostPaint notification by default.
A simple work around is to create an empty OnAdvancedCustomDrawSubItem event handler.

- Issue History
Date Modified Username Field Change
2006-03-21 13:25 Mongoose New Issue
2006-03-21 13:25 Mongoose File Added: ListMemoryLeak.zip
2006-03-22 02:44 AHUser Status new => resolved
2006-03-22 02:44 AHUser Resolution open => fixed
2006-03-22 02:44 AHUser Assigned To => AHUser
2006-03-22 02:44 AHUser Note Added: 0008714
2006-07-27 00:56 obones Relationship added related to 0003839


Mantis 1.1.6[^]
Copyright © 2000 - 2008 Mantis Group
Powered by Mantis Bugtracker