Hi,
> I use windows XP, Windows 7 and win32::GUI 1.06. Problem exists on the both 
> OS`s.

What version of Perl are you using?
> It is not problem with win32::GUI but I experienced it just using the module 
> in my application.
> 
> My application dynamically generates series of windows (potentially 
> unlimited). Each of those is full Win32::GUI object with all the staf: 
...
I also have a dynamic windows interface, but not as large as yours. 
> 
> Here is the perl script which shows the problem. On my machine the error of 
> "Out of memmory" appeared after a little over 4000 iteration - it depends on 
> the machine. Not always this writing happens - very often just stops with 
> strange background colors (black for the example).

On my machine, your script hardly leaks at all (Win32::GUI 1.06, Perl 5.8.9). I 
would need to run your script for at least 100,000 iterations before memory 
becomes an issue?
When you get strange colors it usually means your script is not freeing windows 
handles (which are created/destroyed automatically by win32::gui). Your script 
isn't leaking handles either.
> My question: Does anybode can show me how I could use the memory of deleted 
> objects again? Please look at the example: The address of the object is going 
> up and up... How to stop it? In the code I just delete the object so it is 
> obvious that the memmory is free for reusing. Strange enough is the fact that 
> the object which contains internal GUI window objects got the same address.
> What is going on? I was searching the Internet but not succeded - althoug 
> they 
> say in this area Perl sucks. Maybe Perl is not good tool for 'really' big or 
> long working applications because of practical leak of memory?

Perl uses a reference counting methodology for it's memory allocation and 
memory is only freed when the count gets to zero. If the count never gets to 
zero (because of a bug or design issue, such as using circular links) then 
memory will never be freed. Perl is fine for large long running applications. 
In your example the small memory leak looks like a bug within Win32::GUI. It's 
likely that the issue you are having in your application is that you are 
storing references to Win32::GUI objects in different places so the reference 
count never gets to zero thus the object isn't destroyed. I've found the "big 
memory problems" are associated with leaking windows handles and GDI objects 
(open task manager and display these columns, if they keep increasing then you 
need to work out why).
Cheers,
jez.
 
                                          
------------------------------------------------------------------------------
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
_______________________________________________
Perl-Win32-GUI-Users mailing list
Perl-Win32-GUI-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users
http://perl-win32-gui.sourceforge.net/

Reply via email to