如何使用除IplImages之外的JavaCv对象释放存储?

时间:2013-08-27 10:51:50

标签: javacv

我在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的)使用它来释放存储空间?

1 个答案:

答案 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