If I create a .NET object instance, then that instance is never garbage collected, even if I call "clear all"

댓글 수: 4

Guillaume
Guillaume 2020년 1월 8일
Can you provide a bit more details, such as example code and how you ascertain the object is not destroyed?
Guillaume
Guillaume 2020년 1월 8일
Roberto Olmi's comment mistakenly posted as an answer moved here:
Constructor of base class (retains a reference to a "Layout" object):
Here the test code in Matlab:
At the end, by looking with a memory profiling tool I can see that Matlab application retains 4 instances of "Layout" and 4 instances of "RoadmapHelper"
Roberto Olmi
Roberto Olmi 2020년 1월 8일
I increased the for iterations above to
for i=1:100
this is the result as seen by the memory profiler application:
Capture.PNG
Capture.PNG
Guillaume
Guillaume 2020년 1월 8일
The delete calls should have released all the references that matlab holds to your objects. The garbage collection itself is handled by .Net itself. Could it be that your LayoutLoader keeps hold of references to the objects?

댓글을 달려면 로그인하십시오.

 채택된 답변

Roberto Olmi
Roberto Olmi 2020년 1월 8일

0 개 추천

Dear Guillaume,
thanks a lot for you help. I understood that my objects couldn't be collected because they were used inside a separated thread that was never stopped after object creation.
Stopping that thread before calling delete allows the object to be garbage ollected.
Thanks again
Roberto

추가 답변 (0개)

카테고리

제품

릴리스

R2019b

태그

질문:

2020년 1월 8일

답변:

2020년 1월 8일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by