mirror of
https://github.com/vale981/ray
synced 2025-03-08 11:31:40 -05:00
explicit delete local reference in task_execution_callback
for garbage collection (#6379)
This commit is contained in:
parent
ed294f4c23
commit
2003d2d952
2 changed files with 13 additions and 3 deletions
|
@ -156,6 +156,7 @@ class JavaByteArrayBuffer : public ray::Buffer {
|
|||
|
||||
~JavaByteArrayBuffer() {
|
||||
env_->ReleaseByteArrayElements(java_byte_array_, native_bytes_, JNI_ABORT);
|
||||
env_->DeleteLocalRef(java_byte_array_);
|
||||
}
|
||||
|
||||
private:
|
||||
|
@ -205,8 +206,9 @@ inline void JavaListToNativeVector(
|
|||
int size = env->CallIntMethod(java_list, java_list_size);
|
||||
native_vector->clear();
|
||||
for (int i = 0; i < size; i++) {
|
||||
native_vector->emplace_back(
|
||||
element_converter(env, env->CallObjectMethod(java_list, java_list_get, (jint)i)));
|
||||
auto element = env->CallObjectMethod(java_list, java_list_get, (jint)i);
|
||||
native_vector->emplace_back(element_converter(env, element));
|
||||
env->DeleteLocalRef(element);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -228,7 +230,9 @@ inline jobject NativeVectorToJavaList(
|
|||
env->NewObject(java_array_list_class, java_array_list_init_with_capacity,
|
||||
(jint)native_vector.size());
|
||||
for (const auto &item : native_vector) {
|
||||
env->CallVoidMethod(java_list, java_list_add, element_converter(env, item));
|
||||
auto element = element_converter(env, item);
|
||||
env->CallVoidMethod(java_list, java_list_add, element);
|
||||
env->DeleteLocalRef(element);
|
||||
}
|
||||
return java_list;
|
||||
}
|
||||
|
@ -304,6 +308,8 @@ inline jobject NativeRayObjectToJavaNativeRayObject(
|
|||
auto java_metadata = NativeBufferToJavaByteArray(env, rayObject->GetMetadata());
|
||||
auto java_obj = env->NewObject(java_native_ray_object_class,
|
||||
java_native_ray_object_init, java_data, java_metadata);
|
||||
env->DeleteLocalRef(java_metadata);
|
||||
env->DeleteLocalRef(java_data);
|
||||
return java_obj;
|
||||
}
|
||||
|
||||
|
|
|
@ -64,6 +64,10 @@ JNIEXPORT jlong JNICALL Java_org_ray_runtime_RayNativeRuntime_nativeInitCoreWork
|
|||
for (auto &obj : return_objects) {
|
||||
results->push_back(obj);
|
||||
}
|
||||
|
||||
env->DeleteLocalRef(java_return_objects);
|
||||
env->DeleteLocalRef(args_array_list);
|
||||
env->DeleteLocalRef(ray_function_array_list);
|
||||
return ray::Status::OK();
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue