aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/java
diff options
context:
space:
mode:
authorGravatar WeberXie <xietingwen@gmail.com>2018-07-08 00:33:45 +0800
committerGravatar WeberXie <xietingwen@gmail.com>2018-07-08 00:33:45 +0800
commit9608d3bf6636a4c139433bf500314105328e491c (patch)
tree48f6ced82d190aba85c915d77c4caca5a89d01f9 /tensorflow/java
parent51ddb66cdf1444998827e03c4b5f592841ee6255 (diff)
resolve issue 17698, Session JNI interface has memory leak
Diffstat (limited to 'tensorflow/java')
-rw-r--r--tensorflow/java/src/main/native/session_jni.cc10
1 files changed, 6 insertions, 4 deletions
diff --git a/tensorflow/java/src/main/native/session_jni.cc b/tensorflow/java/src/main/native/session_jni.cc
index 2cd542d3c9..708983fef5 100644
--- a/tensorflow/java/src/main/native/session_jni.cc
+++ b/tensorflow/java/src/main/native/session_jni.cc
@@ -116,20 +116,22 @@ JNIEXPORT jlong JNICALL Java_org_tensorflow_Session_allocate2(
TF_Graph* graph = reinterpret_cast<TF_Graph*>(graph_handle);
TF_Status* status = TF_NewStatus();
TF_SessionOptions* opts = TF_NewSessionOptions();
- const char* ctarget = nullptr;
jbyte* cconfig = nullptr;
- if (target != nullptr) {
- ctarget = env->GetStringUTFChars(target, nullptr);
- }
if (config != nullptr) {
cconfig = env->GetByteArrayElements(config, nullptr);
TF_SetConfig(opts, cconfig,
static_cast<size_t>(env->GetArrayLength(config)), status);
if (!throwExceptionIfNotOK(env, status)) {
env->ReleaseByteArrayElements(config, cconfig, JNI_ABORT);
+ TF_DeleteSessionOptions(opts);
+ TF_DeleteStatus(status);
return 0;
}
}
+ const char* ctarget = nullptr;
+ if (target != nullptr) {
+ ctarget = env->GetStringUTFChars(target, nullptr);
+ }
TF_Session* session = TF_NewSession(graph, opts, status);
if (config != nullptr) {
env->ReleaseByteArrayElements(config, cconfig, JNI_ABORT);