Как проверить на утечки памяти в JNI - PullRequest
4 голосов
/ 01 февраля 2012

В моей программе JNI я использую

new
delete
env->NewGlobalRef
env->DeleteGlobalRef
jvm->AttachCurrentThread
jvm->DetachCurrentThread

Какой хороший способ тщательно проверить утечки памяти?

Ответы [ 2 ]

3 голосов
/ 01 февраля 2012

Убедитесь, что все new, env->NewGlobalRef и jvm->AttachCurrentThread находятся в конструкторе объекта, который вызывает соответствующую функцию освобождения в своем деструкторе.

Это метод, называемый RAII , который жизненно важен для написания любой правильной программы на C ++.

0 голосов
/ 01 февраля 2012
  • Сначала попробуйте использовать умные указатели .
  • Как указал Манкарс, старайтесь по возможности использовать идиому RAII для создания и удаления ваших глобальных ссылок.
  • Используйте как можно меньше глобальных ссылок
  • Бесплатные локальные ссылки при построении их в цикле

Посмотрите здесь для управления ссылками.

Вы уже знаете, что ваш нативный код пропускает память?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...