Hi, Peter,

There is at least one known memory leak problem with IronPython. However, it 
only affects the case when you run lots of python scripts within the same 
process, not when a single python script is running (as an application):

http://ironpython.codeplex.com/workitem/31764

Recently, there was some progress in debugging of the problem, but it is not 
solved yet.

Usually, it is not good practice to call GC.Collect() explicitly, except in 
cases when you certainly know that there is a huge amount of memory which is to 
be released now.

There are certain knobs you can use to tweak the garbage collection algorithms. 
Especially the ServerGC setting brought a 200% speedup on a compute and memory 
allocation intense c# application (geodata processing) on a 64 Bit multi-CPU 
machine, on the cost of about 200MB more memory usage (of about 2.5G total).

Google will give you many helpful links like
http://msdn.microsoft.com/de-de/library/0xy59wtx%28v=vs.110%29.aspx
http://msdn.microsoft.com/en-us/library/ms229357%28v=vs.110%29.aspx
http://www.atalasoft.com/cs/blogs/rickm/archive/2008/08/20/changing-your-garbage-collector-settings-on-the-fly-net-memory-management-part-5.aspx
http://msdn.microsoft.com/en-us/library/x2tyfybc.aspx


Best regards

Markus Schaber

CODESYS(r) a trademark of 3S-Smart Software Solutions GmbH

Inspiring Automation Solutions
________________________________
3S-Smart Software Solutions GmbH
Dipl.-Inf. Markus Schaber | Product Development Core Technology
Memminger Str. 151 | 87439 Kempten | Germany
Tel. +49-831-54031-979 | Fax +49-831-54031-50

E-Mail: m.scha...@codesys.com<mailto:m.scha...@codesys.com> | Web: 
codesys.com<http://www.codesys.com> | CODESYS store: 
store.codesys.com<http://store.codesys.com>
CODESYS forum: forum.codesys.com<http://forum.codesys.com>

Managing Directors: Dipl.Inf. Dieter Hess, Dipl.Inf. Manfred Werner | Trade 
register: Kempten HRB 6186 | Tax ID No.: DE 167014915
Von: Ironpython-users 
[mailto:ironpython-users-bounces+m.schaber=codesys....@python.org] Im Auftrag 
von Peter Schwalm
Gesendet: Dienstag, 10. Dezember 2013 05:29
An: Slide
Cc: ironpython mailList
Betreff: Re: [Ironpython-users] memory fragmentation oder leak in ironpython 
program / I apologize

Hallo Slide,

thank you for your answer. I don't knwo if iTextSharp uses IDisposable. I 
admit, I use it as a block box, but at least I suppose it's well written, 
because I think it is a proven tool.

... and I apologize: I have found the mistake in my own code now. It was a list 
which - unnecessarily - grew with every document and which was worked upon 
rather costly. So I caused the problem myself. The program has a constant 
throughput, and for now I'm happy.

But I still have no safe way to analyze such problems, and there are still 
questions which I don't have an answer for:

Is ipy kosher in it's memory handling?
Where does this ever growing number of GCHandles (shown by sysinternals 
procexp) come from? Can I simply ignore it?
Is it good practice to use explicit GC.Collect()-calls?

If anyone can share her/his experience in these fields, I would be happy.

Thanks in advance
Peter Schwalm





Am 10.12.2013 02:19, schrieb Slide:

Does itextsharp implement idisposable for any objects you are using?
On Dec 9, 2013 5:19 PM, "Peter Schwalm" 
<p...@peter-schwalm.de<mailto:p...@peter-schwalm.de>> wrote:
Hello,

I have an ipy script that manipulates several thousand .pdf documents in a 
single run via itextsharp. I observe that it is permanently getting slower. 
After starting the program it processes about 10 documents per second, after 
processing 5000 documents it does only process 3 oder 4 docs per second.

I have already in .net GC garbage collection calls which made the situation 
something better (before that it was still worse).

Does anyone know if this could a fragmention problem? And what I could against 
it?

Another peculiarity:

in sysinternals procexp I can see that the memory usage rises during the 
excecution, but - after I inserted the GC.Collect() calls - relative 
moderately. What rises constantly are the GC handles (about 170.000 after 8000 
documents). If I read the docs it looks as if GCHandles are handles that make 
managed memory accessible for non-managed programs.

Does anyone know where these GC handles come from, if they could be the cause 
of my problems and what I could do against them?

Thanks in advance,
Peter Schwalm


_______________________________________________
Ironpython-users mailing list
Ironpython-users@python.org<mailto:Ironpython-users@python.org>
https://mail.python.org/mailman/listinfo/ironpython-users

_______________________________________________
Ironpython-users mailing list
Ironpython-users@python.org
https://mail.python.org/mailman/listinfo/ironpython-users

Reply via email to