- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好吧,这让我的小心思感到困惑。
我从对 GetObjectField() 的两次调用之一中得到了 null 返回。每个对象都是一个 DirectByteBuffer。该调用不会因找不到字段而引发异常,但仍然返回 NULL。
这是一个特殊的部分 - 如果我更改内部类中字段定义的顺序,我会看到从源到目标的 null 更改。
这里是代码的释义,以将问题简化为本质。
public class Outer {
private native int submitInner(Inner submission);
private static class Inner {
private int status;
private ByteBuffer source;
private ByteBuffer dest;
private Outer outer;
Inner(Outer outer, ByteBuffer source, ByteBuffer dest) {
this.outer = outer;
this.source = source;
this.dest = dest;
status = 0;
}
}
native 代码。为了简洁起见,我在这里剪掉了字段 ID。可以这么说,问题从一个字段转移到另一个字段,而没有触及这些字段,因此字段 id 可能没问题。
JNIEXPORT jint JNICALL Java_Outer_submitInner
(JNIEnv *env, jobject thisj, jobject inner ) {
jobject source = (*env)->GetObjectField(env, thisj, Inner_source);
jobject dest = (*env)->GetObjectField(env, thisj, Inner_dest);
jobject outer = (*env)->GetObjectField(env, thisj, Inner_outer);
printf("%016llx %016llx %016llx\n", (long long)source, (long long)dest, (long long)outer);
...
有人有任何想法可以理解这一点吗?
有什么调试建议吗?我正在从 Eclipse 浏览 Java。有没有办法通过 C 或汇编语言来了解到底发生了什么?
谢谢, - 蒂姆。
最佳答案
您正在寻找 Inner 字段,但您提供了 Outer (thisj) 实例作为获取它们的位置。
关于java - JNI GetObjectField() 为两个 DirectByteBuffer 之一返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10631976/
我计划使用 DirectByteBuffers 来连接用 C++ 编写的第三方库。 我很担心the hadoop docs说: DirectByteBuffers are garbage collec
绝大多数 DirectByteBuffer - 如果足够大 - 是在 Java 堆之外分配的。但是它的一部分仍然会在堆上,即使它很小。 任意大小的 DirectByteBuffer 在堆上占用多少字节
我的代码是: if (frameRGBABuffer == null) { frameRGBABuffer = ByteBuffer.allocateDirect(cameraHeight *
我知道当一个 directbytebuffer 被分配时,它不受垃圾收集的影响,但我想知道的是 wrapping 对象是否被垃圾收集。 例如,如果我分配了一个新的 DirectByteBuffer d
我知道一种方法 - 在 C++ 端使用 memcpy: C++ 方法: void CopyData(void* buffer, int size) { memcpy(buffer, sourc
我在 DirectByteBuffer.java 中找到了这段代码: private long ix(int i) { return address + (i << 0); } 有什么特殊用途
出于某种原因,我必须使用目前无法从 JVM 直接访问的特定于 Linux 的 API,并且需要设计一个接受 ByteBuffer 的方法(这绝对不是因为某些性能原因)。这是它的样子: //I need
好吧,这让我的小心思感到困惑。 我从对 GetObjectField() 的两次调用之一中得到了 null 返回。每个对象都是一个 DirectByteBuffer。该调用不会因找不到字段而引发异常,
我想在 DirectByteBuffer 中存储一个散列映射(最多 1,000,000,000 个条目),我需要向其中读取和写入条目。 HashMap 将有一个字符串键和可序列化的对象。但是如果将 H
我有一个 Java 项目,它通过 COM 使用一个 dll 库。我有 Windows 7,并且使用 32 位 Java 1.6。我使用 2012/04/26 发布的 com4j 作为桥梁。它有效。 问
我正在使用 async-profiler 和 perf,并决定测量 DirectByteBuffer 的内核 Activity 磁盘输入输出。这是代码(用 Scala 编写,但它的 Java 版本应该
我想做什么 我需要使用直接内存来避免 GC 移动东西。我想为那些启用大页面。 到目前为止 标志 -XX:+UseLargePages 在使用堆缓冲区(非直接字节缓冲区)时工作正常,但在使用 Direc
我是 Clojure 的新手,我需要 Clojure 为我做一个简单的任务,相当于下面的 Java 代码: MappedByteBuffer out = new RandomAccessFile("f
得到了一个仍然支持 Java 6 的项目。下面的代码位于一个 jar 文件中,该文件使用 Compiler compliance level 1.6 该 jar 文件应该从为 java 6 或更新版本
我是一名优秀的程序员,十分优秀!