Когда я погуглил, я обнаружил, что мне следует использовать java.lang.ref.Cleaner, чтобы сделать то же самое, но я хочу быть уверен, что это правильный подход, поскольку я читал, что потребуется активация внутреннего модуля в моей JVM.
Не могли бы вы мне помочь?
Код: Выделить всё
* Clean a MappedByteBuffer* @param pByteBuffer Buffer to clean
*/
private void freeByteBuffer(ByteBuffer pByteBuffer) {
try {
Method lCleanerMethod = pByteBuffer.getClass().getMethod("cleaner");
lCleanerMethod.setAccessible(true);
Method lCleanMethod = Class.forName("sun.misc.Cleaner").getMethod("clean");
lCleanMethod.setAccessible(true);
lCleanMethod.invoke(lCleanerMethod.invoke(pByteBuffer));
} catch (Exception lEx) {
logger.error(KernelError.FREE_MEM, idefixComponentName, lEx);
}
}
Я ожидал, что код будет работать так же, как указано в спецификации программного обеспечения.
Подробнее здесь: https://stackoverflow.com/questions/790 ... va-11-java
Мобильная версия