<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class=""><br class=""></div>  Ahh, the stuff you are seeing is just memory associated with the initialization of the matrix package; it is not the matrix memory (that is all freed). This memory used in the initialization is used only once and will not grow with more matrices. <div class=""><br class=""></div><div class="">  If you run the program with <span style="font-family: Menlo; font-size: 14px;" class="">-malloc_dump</span> then you will see nothing is printed since the memory used in the initialization is freed in PetscFinalize().</div><div class=""><br class=""></div><div class="">  Barry</div><div class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Sep 24, 2021, at 10:31 AM, Medane TCHAKOROM <<a href="mailto:medane.tchakorom@univ-fcomte.fr" class="">medane.tchakorom@univ-fcomte.fr</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Thanks Barry,<br class=""><br class="">I can't share the orginal code i'am working on unfortunately.<br class=""><br class="">But the example i wrote -- even if you do not that into account //SOME CODE HERE .. part -- give me , by using PetscMallocDump, some informations about memory that was not freed.<br class=""><br class="">Based on the example code i sent, i was expecting that PetscMallocDump give no output.<br class=""><br class="">Médane<br class=""><br class=""><br class="">On 24/09/2021 16:13, Barry Smith wrote:<br class=""><blockquote type="cite" class="">  The code you sent looks fine, it should not leak memory.<br class=""><br class="">  Perhaps the /// SOME CODE HERE.... is doing something that prevents the matrix from being actually freed. PETSc uses reference counting on its objects so if another object keeps a reference to the matrix then the memory of the matrix will not be freed until the reference count drops back to zero. For example if a KSP has a reference to the matrix and the KSP has not been completely freed the matrix memory will remain.<br class=""><br class="">   We would need to see the full code to understand why the matrix is not being freed.<br class=""><br class="">   Barry<br class=""><br class=""><br class=""><blockquote type="cite" class="">On Sep 24, 2021, at 10:08 AM, Medane TCHAKOROM <<a href="mailto:medane.tchakorom@univ-fcomte.fr" class="">medane.tchakorom@univ-fcomte.fr</a>> wrote:<br class=""><br class="">Hello,<br class=""><br class="">I have problem with a code i'am working on.<br class=""><br class="">To illustrate my problem, here is an example:<br class=""><br class=""><br class="">int main(int argc, char *argv[])<br class="">{<br class=""><br class="">     PetscErrorCode ierr;<br class=""><br class="">     ierr = PetscInitialize(&argc, &argv, (char *)0, NULL);<br class="">     if (ierr)<br class="">         return ierr;<br class=""><br class="">     int i = 0;<br class="">     for (i = 0; i < 1; i++)<br class="">     {<br class="">         Mat A;<br class="">         ierr = MatCreate(PETSC_COMM_WORLD, &A);<br class="">         CHKERRQ(ierr);<br class="">         ierr = MatSetSizes(A, 16, 16, PETSC_DECIDE,PETSC_DECIDE);<br class="">         CHKERRQ(ierr);<br class="">         ierr = MatSetFromOptions(A);<br class="">         CHKERRQ(ierr);<br class="">         ierr = MatSetUp(A);<br class="">         CHKERRQ(ierr);<br class=""><br class=""><br class="">         ierr = MatAssemblyBegin(A, MAT_FINAL_ASSEMBLY);<br class="">         CHKERRQ(ierr);<br class="">         ierr = MatAssemblyEnd(A, MAT_FINAL_ASSEMBLY);<br class="">         CHKERRQ(ierr);<br class=""><br class=""><br class=""><br class="">         /// SOME CODE HERE....<br class=""><br class="">         MatDestroy(&A);<br class=""><br class=""><br class="">     }<br class=""><br class=""><br class="">     FILE *fPtr;<br class="">     fPtr = fopen("petsc_dump_file.txt", "a");<br class="">     PetscMallocDump(fPtr);<br class="">     fclose(fPtr);<br class=""><br class="">     ierr = PetscFinalize();<br class="">     CHKERRQ(ierr);<br class=""><br class="">     return 0;<br class="">}<br class=""><br class=""><br class=""><br class="">The problem is , in the loop, the memory consumption keep increasing till the end of the program.<br class=""><br class="">I checked memory leak with PetscMallocDump, and found out that the problem may be due to matrix creation.<br class=""><br class="">I'am new to Petsc and i don't know if i'am doing something wrong. Thanks<br class=""><br class=""><br class="">Médane<br class=""><br class=""></blockquote></blockquote></div></div></blockquote></div><br class=""></div></body></html>