Hi

i have a very strange resource problem. I'm using the GemBox.Spreadsheet dll and it seemed that somehow the resources (or something) aren't freed on finishing. I did a manual GC.Collect and could see that the garbage collector did release the memory, but when looking into top or some kind of proces list, the memory was still in use. If I ran it a second time, it would even allocate more memory. The only way the memory is freed, is on killing xsp of apache. So, I thought I should use a different AppDomain. After sometime I got i working, but unfortunally, the memory is still not freed! I have the same issue with mono 1.9.1 and 1.2.6. According to GemBox, the GC.Collect should clean up the memory. Here is my code:


                        AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationBase = Path.Combine (ApplicationInfo.ApplicationPath, "bin");
                        setup.PrivateBinPath = ApplicationInfo.ApplicationPath;
                        setup.ApplicationName = "CsvImport";
AppDomain appDomain = AppDomain.CreateDomain("Converter", null, setup);
                        
                        try {
                                //Console.Error.WriteLine("Checkpoint 1");
ObjectHandle oh = (ObjectHandle)appDomain.CreateInstanceFrom (Path.Combine(Path.Combine(ApplicationInfo.ApplicationPath, "bin"), "DMICTService.Converter.GemBoxSpreadsheet.dll"), "DMICTService.Converter.GemBoxSpreadsheet.GemBoxConverter");
                                //Console.Error.WriteLine("Checkpoint 2");

                                object o = oh.Unwrap();

                                //if (o != null)
                                //      Console.Error.WriteLine("o={0}", 
o.GetType());

                                if (o is iAppDomainConverter) {
                                        // Console.Error.WriteLine("we have a 
iAppDomainConverter");

                                        iAppDomainConverter conv = 
(iAppDomainConverter) o;
                                        // 
Console.Error.WriteLine(conv.ToUpper("test"));

                                        Willow.Common.IO io = new 
Willow.Common.IO();
                                        Encoding enc = 
io.TextFileEncodingGuess(path);

                                        if (conv.LoadFileCsv(path, seperator, 
enc))
                                                Console.Error.WriteLine("csv file 
loaded");
                                }
                        } finally {
                                AppDomain.Unload(appDomain);
                                appDomain = null;
                        }

I thought that running something in a different domain would seperate the memory usage etc. So, shouldnt this construction clean up the memory?

with kind regards

Peter Hagen
[EMAIL PROTECTED]
www.WingsOfDeath.nu



_______________________________________________
Mono-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to