POST
|
Good luck with trying to open the featureclass once per run. Thats exactly what i'm doing and after a few runs my process crashes or gives me an "attempted to read or write protected memory" error that we traced down to the FeatureClass.Search() call. Seems to me even between runs the featureclass is being held and some sort of memory buildup causes our crash. If you have better luck please let me know. Jason, from this post, has tried to help us with our problem too which is greatly appreciated. Gary Gary, yes I was suspicious about doing that... in the end, it didn't work. When we use the same FeatureClass instance for the whole process, at some point, the process hangs at the function "FeatureClass.Search". So no luck with this work-around...
... View more
01-18-2013
09:31 AM
|
0
|
0
|
1031
|
POST
|
I think that the "results.txt" file didn't make it in my previous post because it was too big. Here it is, compressed.
... View more
01-15-2013
11:31 AM
|
0
|
0
|
1232
|
POST
|
Thank you for your help, Jason. I followed the procedure with the Windows Debugging Tools. To give you an idea of my test, here is the loop that i executed right after I start marking the memory: For i As Integer = 1 To 5 [INDENT] 'There is about 21 feature classes in that "_featureClassNames" collection For Each featureClassName As String In _featureClassNames [INDENT]Dim esriFeatureClass As Geodatabase.IFeatureClass = Nothing esriFeatureClass = _featureWorkspace.OpenFeatureClass(featureClassName) Marshal.ReleaseComObject(esriFeatureClass) [/INDENT]Next [/INDENT]Next Then took the second mark after and did the difference. I attached the result file to the thread (results.txt). I did a research with the "ESRI" keyword in the text file and i can find a couple of places where we can see the trace of the memory allocated. So do you think there is something wrong in my code? Or that the ESRI objects are not released and that I don't have any control on this? Thanks again, very appreciated! Joel
... View more
01-15-2013
11:27 AM
|
0
|
0
|
1232
|
POST
|
Hello ESRI developer community, I've been working with the ESRI ArcObjects for many years now, mainly on an ETL (Extract/Transform/Load) .NET application. This application can run for a long time to transfer data from an ESRI Geodatabase to the target system (for example, 3 consecutive days). We recently had a situation where our application crashes with an "OutOfMemory" exception. To find the memory leak, we profiled our application with SciTech .NET Memory Profiler. Since ArcObjects is a COM based library and that the application profiler can't give the detail about the instanciated objects, I had to comment the code of our application to narrow the possibilities of the objects used/function calls that was causing this memory leak. I ended up isolating the IFeatureWorkspace.OpenFeatureClass function being the main source of the problem. This function is called multiple times during the 2-3 days of process and it seems like the FeatureClass object returned is never released. I read multiple articles about memory leak with ArcObjects and tried everything that was suggested to release the FeatureClass object, i.e.: The .NET functions: Marshal.ReleaseComObject Marshal.FinalReleaseComObject The ArcObject ComReleaser object with the following logic: Using comReleaser As New ComReleaser() esriFeatureClass = _featureWorkspace.OpenFeatureClass(featureClassName) comReleaser.ManageLifetime(esriFeatureClass) End Using All this combined with the .NET Garbage Collector functions: GC.Collect GC.WaitForPendingFinalizers I did a small application that simulates the same routine that our ETL application does to help for the profiling and also validate that the behavior is the same. It turns out it has the same behavior, the amount of memory allocated is similar. With the routine of opening the feature class repeated 450 times, there is 15 Mb that stays allocated at the end (SciTech Memory Profiler screenshot attached). So when the process runs for 3 days, there is more than 200 Mb that stays allocated just for those FeatureClass alone. I attached the Visual Studio 2010 project that does the routine, so if you want to take a look at the code to see if i'm missing something. Right now, I'm out of solution to fix that. Any help would be greatly appreciated. I'm working with ESRI ArcGIS 9.3 (9.3.0.1770 is the version number of the ESRI DLLs in Visual Studio) Thanks in advance, Joel
... View more
01-14-2013
06:30 AM
|
0
|
19
|
7141
|
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:24 AM
|