내 애플리케이션이 누출되는지 여부를 이해하려고합니다. 내 응용 프로그램을 실행하는 경우valgrind, massif, top 및 pmap 비교
, 나는 정기적으로 pmap
를 실행하고 관찰 : 나는 top
실행
mapped: 488256K writeable/private: 90144K shared: 0K
mapped: 488260K writeable/private: 101912K shared: 0K
mapped: 488256K writeable/private: 102708K shared: 0K
mapped: 488260K writeable/private: 105112K shared: 0K
을 관찰 :
VIRT RES SHR
488260 17684 3020
488256 20060 3032
488256 22700 3032
488256 26132 3032
488256 28772 3032
488256 31880 3032
"RES"과의 증가 "를 쓰기/개인이" 내가 누출을 의심하게 만드는 이유. 그러나, 나는 모든 주요 누출을 감지하지 않습니다 valgrind
를 실행, 나는 실행을 중단 할 때 나는 일관되게 는 20MB에 도달 할 메모리에 대한 참조 :
==19998==
==19998== HEAP SUMMARY:
==19998== in use at exit: 20,351,513 bytes in 974 blocks
==19998== total heap usage: 329,404 allocs, 328,430 frees, 34,562,346 bytes allocated
==19998==
==19998== LEAK SUMMARY:
==19998== definitely lost: 63 bytes in 4 blocks
==19998== indirectly lost: 0 bytes in 0 blocks
==19998== possibly lost: 4,679 bytes in 76 blocks
==19998== still reachable: 20,346,771 bytes in 894 blocks
==19998== suppressed: 0 bytes in 0 blocks
==19998== Rerun with --leak-check=full to see details of leaked memory
==19998==
==19998== For counts of detected and suppressed errors, rerun with: -v
==19998== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
나는 valgrind --tool=massif
실행하고 또한 20MB의 평면 참조 :
QUESTION : 누군가 valgrind와 massif가 내 프로그램이 20MB 메모리를 일관되게 사용한다고 설명 할 수 있습니까?하지만 top과 pmap을 보면 사용량이 늘어났다고 말할 수 있습니까?
'top '이 증가하는 이유를 이해하려면'valgrind --pages-as-heap = yes'를 사용하여 프로그램에서 메모리 할당을 분석해야합니다. . 왜 증가가 있는지 이해할 것입니다. 'top'은 프로세스의 메모리 소비를 측정하는 방식입니다. http://valgrind.org/docs/manual/ms-manual.html#ms-manual.not- 측정. 그리고'valgrind - pages-as-heap = yes'를 사용하면 이러한 할당이 어디에서 수행되는지 볼 수 있습니다. –
고마워 친구, 그거 최고야. 적어도 지금은 대산 괴를 얻어서 증가를 보일 수 있습니다. 이제 코드에서 어떻게 추적하는지 알아 내야합니다. – jsj