#c #openssl #heap-memory #valgrind
#c #openssl #куча-память #valgrind
Вопрос:
У меня есть простой HTTPS-сервер, реализованный с помощью библиотеки Openssl на C. Использование кучи кажется огромным для одного соединения. Ниже приведены некоторые объекты, которые могут занимать много места в куче:
char readbuffer[8192]
SSL_CTX
SSL
Это нормально? Есть ли инструмент, который может определить, какой объект занимает сколько кучи?
HEAP SUMMARY:
==7644== in use at exit: 78,502 bytes in 2,366 blocks
==7644== total heap usage: 3,548 allocs, 1,182 frees, 3,139,689 bytes allocated
==7644==
==7644== LEAK SUMMARY:
==7644== definitely lost: 0 bytes in 0 blocks
==7644== indirectly lost: 0 bytes in 0 blocks
==7644== possibly lost: 0 bytes in 0 blocks
==7644== still reachable: 78,502 bytes in 2,366 blocks
==7644== suppressed: 0 bytes in 0 blocks
Ответ №1:
Попробуйте выяснить, какие вызовы malloc выполняются и когда. Dmalloc может помочь: http://dmalloc.com /
Однажды я также использовал простой скрипт-оболочку для отслеживания распределения памяти вручную. Я думаю, что это было так: http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15213-s03/src/interposition/mymalloc.c