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/D18411main
parent
096f5be0ed
commit
61955a0dda
@ -0,0 +1,35 @@ |
||||
// Copyright (c) 2014, Facebook, Inc. All rights reserved.
|
||||
// This source code is licensed under the BSD-style license found in the
|
||||
// LICENSE file in the root directory of this source tree. An additional grant
|
||||
// of patent rights can be found in the PATENTS file in the same directory.
|
||||
|
||||
package org.rocksdb; |
||||
|
||||
/** |
||||
* RocksObject is the base-class of all RocksDB related class that has |
||||
* a pointer to some c++ rocksdb object. Although RocksObject |
||||
* will release its c++ resource on its finalize() once it has been |
||||
* garbage-collected, it is suggested to call dispose() manually to |
||||
* release its c++ resource once an instance of RocksObject is no |
||||
* longer used. |
||||
*/ |
||||
public abstract class RocksObject { |
||||
protected RocksObject() { |
||||
nativeHandle_ = 0; |
||||
} |
||||
|
||||
/** |
||||
* Release the c++ object pointed by the native handle. |
||||
*/ |
||||
public abstract void dispose(); |
||||
|
||||
protected boolean isInitialized() { |
||||
return (nativeHandle_ != 0); |
||||
} |
||||
|
||||
@Override protected void finalize() { |
||||
dispose(); |
||||
} |
||||
|
||||
protected long nativeHandle_; |
||||
} |
Loading…
Reference in new issue