Если это - что-то, что на самом деле не изменяет данные по Вашему сайту, это должен быть ПОЛУЧИТЬ запрос. Даже если это - форма, можно все еще установить его как получить запрос. В то время как, как другие указывают, Вы могли кэшировать результаты POST, он не будет иметь семантического смысла, потому что POST по определению изменяет данные.
Когда вы вызываете функции New ..., вы создаете «локальную ссылку» - ссылку на этот объект в локальном стековом фрейме. Это не позволяет виртуальной машине Java собирать этот объект, пока он вам еще нужен. Это нормально, если вы реализуете какой-то собственный метод - его локальный фрейм создается только на время вызова метода. Но когда вы создаете объект из собственного потока, присоединенного к Java, он становится привязанным к этому фрейму стека потока, который будет уничтожен только с этим потоком.
Итак, когда вы закончили с объектом, вы можете вызвать DeleteLocalRef () для сказать, что вам это больше не нужно. Или вы можете окружить всю функцию add () парой PushLocalFrame () / PopLocalFrame (), чтобы создать отдельный локальный фрейм на его продолжительность.
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 следует удалить.
Да, я столкнулся с той же проблемой.
Мое java приложение вызывает C++ приложение через JNI, C++ приложение начинает новый поток и вызывает обратно java метод. В новом потоке создается много объектов, и память быстро увеличивается, хотя я использовал DeleteLocalRef, PushLocalFrame и PopLocalFram.
Я обнаружил, что многие объекты, созданные методом NewObject, не могут быть освобождены. Это странно.