Утечка памяти при вызове Java кодирует от C использование JNI

Если это - что-то, что на самом деле не изменяет данные по Вашему сайту, это должен быть ПОЛУЧИТЬ запрос. Даже если это - форма, можно все еще установить его как получить запрос. В то время как, как другие указывают, Вы могли кэшировать результаты POST, он не будет иметь семантического смысла, потому что POST по определению изменяет данные.

7
задан ata 27 August 2009 в 13:01
поделиться

3 ответа

Когда вы вызываете функции New ..., вы создаете «локальную ссылку» - ссылку на этот объект в локальном стековом фрейме. Это не позволяет виртуальной машине Java собирать этот объект, пока он вам еще нужен. Это нормально, если вы реализуете какой-то собственный метод - его локальный фрейм создается только на время вызова метода. Но когда вы создаете объект из собственного потока, присоединенного к Java, он становится привязанным к этому фрейму стека потока, который будет уничтожен только с этим потоком.

Итак, когда вы закончили с объектом, вы можете вызвать DeleteLocalRef () для сказать, что вам это больше не нужно. Или вы можете окружить всю функцию add () парой PushLocalFrame () / PopLocalFrame (), чтобы создать отдельный локальный фрейм на его продолжительность.

17
ответ дан 6 December 2019 в 08:44
поделиться

The purpose of the functions ReleaseByteArrayElements and ReleaseStringUTFChars is not to delete the object but to unlock it after a pointer has been obtained with GetByteArrayElements or GetStringUTFChars. Два оператора if следует удалить.

4
ответ дан 6 December 2019 в 08:44
поделиться

Да, я столкнулся с той же проблемой.

Мое java приложение вызывает C++ приложение через JNI, C++ приложение начинает новый поток и вызывает обратно java метод. В новом потоке создается много объектов, и память быстро увеличивается, хотя я использовал DeleteLocalRef, PushLocalFrame и PopLocalFram.

Я обнаружил, что многие объекты, созданные методом NewObject, не могут быть освобождены. Это странно.

0
ответ дан 6 December 2019 в 08:44
поделиться
Другие вопросы по тегам:

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