Память освобождения JNI для предотвращения утечки памяти

EXCEPTION
      WHEN DUP_VAL_ON_INDEX
      THEN
         UPDATE
8
задан Petey B 7 October 2009 в 20:10
поделиться

2 ответа

NewStringUTF () создает новую строку java.lang.String - другими словами, объект в куче Java, который будет собран, когда появится больше нет ссылок на него.

Или вы спрашиваете о otherString ? Я не знаю, что делает FormatMessage , но похоже, что он выделяет память в куче C. Если это так, то да, вы должны явно освободить эту память.

Вы усложняете себе жизнь, иногда устанавливая otherString как постоянную строку. Не делай этого. Вместо этого вызовите NewStringUTF () в блоках вашего if / else, а во втором случае освободите родную строку C.

9
ответ дан 5 December 2019 в 11:25
поделиться

Вам не нужно беспокоиться о памяти, выделенной NewStringUTF, так как об этом позаботится сборщик мусора Java.

Но вы должны освободить lpMsgBuf при передаче FORMAT_MESSAGE_ALLOCATE_BUFFER в FormatMessage (т.е. вы должны использовать LocalFree для освобождения этого буфера), см. Документацию FormatMessage .

6
ответ дан 5 December 2019 в 11:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: