我在JavaCv中存在内存泄漏问题。我已经搜索了很多,我知道如果我在左边分配一些IplImages,我可以使用右边的函数释放存储空间。
cvLoadImage(...)<-->cvReleaseImage(...)
cvCloneImage(...)<-->cvReleaseImage(...)
CvMat.create(...) <--> cvMatObject.release(...)
...
但是,如果我真的必须这样做:
for(int i=0;i<100000;i++){
CvMatArray array=new CvMatArray(); //or new CvScalar() or something else
//How to deallocate array here If I don't want to get memory leaks?
}
我想用其他对象(比IplImage的)使用它来释放存储空间?
答案 0 :(得分:0)
问题解决了。我们必须使用System.gc()来调用垃圾收集器,它会在旧对象之后释放内存:
for(int i = 0; i&lt; 100000000; i ++){ CvMatArray array = new CvMatArray();
CvScalar标量=新的CvScalar();
的System.gc(); }
即使在这种情况下:
for(int i = 0; i&lt; 100000000; i ++){ IplImage array = IplImage.create(zmieniane.cvSize(),8,1); array.release(); 的System.gc(); }
如果我们不想泄漏,我们必须“手动”使用GC