Использование памяти кучи для Openssl

#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