标签: direct-buffer

Java - 何时发布直接缓冲区?

因为它是jvm heap&gc,它何时发布?或者,它一直持续到流程终止?

我已经检查过:

但是所有答案都很模糊,没有人明确回答,是否有明确的答案?至少对于64位Linux上的Java 8.

java nio bytebuffer direct-buffer

7
推荐指数
1
解决办法
3981
查看次数

无法使用修饰符"public"访问类java.nio.DirectByteBuffer(在模块java.base中)的成员

有一个仍然支持Java 6的项目.下面的代码位于使用Compiler compliance level 1.6构建的jar文件中

应该从为java 6或更新版本构建的java应用程序中调用该jar文件.它在Java 8中运行良好.

现在使用Java9,我遇到了nio.DirectByteBuffer的问题,我尝试用这种方式解决它,使用反射:

@SuppressWarnings("unchecked")
static void cleanDirectBuffer(sun.nio.ch.DirectBuffer buffer) {
    if (JAVA_VERSION < 1.9) {
        sun.misc.Cleaner cleaner = buffer.cleaner();
        if (cleaner != null) cleaner.clean();
    } else {
        // For java9 do it the reflection way
        @SuppressWarnings("rawtypes")
        Class B = buffer.getClass(); 
        // will be a java.nio.DirectBuffer, which is unknown if compiled in 1.6 compliance mode
        try {
            java.lang.reflect.Method CleanerMethod = B.getMethod("cleaner");
            CleanerMethod.setAccessible(true);  // fails here !
            Object cleaner = CleanerMethod.invoke(buffer);
            if (cleaner == null) return;
            @SuppressWarnings("rawtypes") …
Run Code Online (Sandbox Code Playgroud)

java reflection direct-buffer

5
推荐指数
2
解决办法
1387
查看次数

标签 统计

direct-buffer ×2

java ×2

bytebuffer ×1

nio ×1

reflection ×1