[Java] Add RocksObject, the base class of all java objects with a c++ pointer.

Summary:
Add RocksObject, the base class of all java objects which has a c++ pointer.
While the finalizer of a RocksObject will release its c++ resource, it is
suggested to call its RocksObject.dispose() to manually release its
c++ resource.

Existing RocksDB java classes are now extending RocksObject.

Test Plan:
make rocksdbjava
make jtest
make jdb_bench

Reviewers: haobo, dhruba, sdong, ankgup87, rsumbaly, swapnilghike, zzbennett

Reviewed By: haobo

CC: leveldb

Differential Revision: https://reviews.facebook.net/D18411
This commit is contained in:
Yueh-Hsuan Chiang
2014-05-01 01:44:46 -07:00
parent 096f5be0ed
commit 61955a0dda
13 changed files with 94 additions and 107 deletions

View File

@@ -26,7 +26,7 @@ jboolean Java_org_rocksdb_Iterator_isValid0(
/*
* Class: org_rocksdb_Iterator
* Method: close0
* Method: seekToFirst0
* Signature: (J)V
*/
void Java_org_rocksdb_Iterator_seekToFirst0(
@@ -135,13 +135,11 @@ void Java_org_rocksdb_Iterator_status0(
/*
* Class: org_rocksdb_Iterator
* Method: status0
* Method: dispose
* Signature: (J)V
*/
void Java_org_rocksdb_Iterator_close0(
void Java_org_rocksdb_Iterator_dispose(
JNIEnv* env, jobject jobj, jlong handle) {
auto it = reinterpret_cast<rocksdb::Iterator*>(handle);
delete it;
rocksdb::IteratorJni::setHandle(env, jobj, nullptr);
}

View File

@@ -415,16 +415,14 @@ void Java_org_rocksdb_RocksDB_remove__JJ_3BI(
/*
* Class: org_rocksdb_RocksDB
* Method: close0
* Signature: ()V
* Method: dispose
* Signature: (J)V
*/
void Java_org_rocksdb_RocksDB_close0(
JNIEnv* env, jobject java_db) {
rocksdb::DB* db = rocksdb::RocksDBJni::getHandle(env, java_db);
void Java_org_rocksdb_RocksDB_dispose(
JNIEnv* env, jobject java_db, jlong jhandle) {
auto db = reinterpret_cast<rocksdb::DB*>(jhandle);
assert(db != nullptr);
delete db;
rocksdb::RocksDBJni::setHandle(env, java_db, nullptr);
}
/*