【发布时间】:2010-03-02 07:40:21
【问题描述】:
晚安,大师们。假设我有一个 java 类 A:
class A {
public A() {}
public native void setValue(String value);
public native String getValue();
}
在实现原生 C 代码时,使用一个全局 char[] 变量来存储刚刚被原生 setValue 方法设置的值。 getValue 方法只返回那个全局 char[] 变量。
我的问题来了:我创建了几个 A 对象,并调用它们各自的 set/get 方法,我发现它们最终写入和读取同一块内存!实际上 C 原生代码中的全局 char[] 变量是完全由所有 A 对象共享的。
谁能给我一些关于这种行为的深入解释?我知道我对 JNI 的工作方式存在根本性的误解。谢谢!
【问题讨论】: