JNI 关于local 和 Global References 疑惑

问题描述

最近在研究JNI部分,有些不太明白jstringMyNewString(JNIEnv*env,jchar*chars,jintlen){jclassstringClass;jmethodIDcid;jcharArrayelemArr;jstringresult;stringClass=(*env)->FindClass(env,"java/lang/String");if(stringClass==NULL){returnNULL;/*exceptionthrown*/}/*GetthemethodIDfortheString(char[])constructor*/cid=(*env)->GetMethodID(env,stringClass,"<init>","([C)V");if(cid==NULL){returnNULL;/*exceptionthrown*/}/*Createachar[]thatholdsthestringcharacters*/elemArr=(*env)->NewCharArray(env,len);if(elemArr==NULL){returnNULL;/*exceptionthrown*/}(*env)->SetCharArrayRegion(env,elemArr,0,len,chars);/*Constructajava.lang.Stringobject*/result=(*env)->NewObject(env,stringClass,cid,elemArr);/*Freelocalreferences*/(*env)->DeleteLocalRef(env,elemArr);(*env)->DeleteLocalRef(env,stringClass);returnresult;}如上代码,为什么stringClass需要释放,而jmethodIDcid不需要呢?

解决方案

解决方案二:
该回复于2011-05-23 09:02:14被版主删除

时间: 2024-08-02 01:52:42

JNI 关于local 和 Global References 疑惑的相关文章

Oracle Local VS Global分区索引简介

在Oracle中,索引和表一样也可以分区.有两种类型的分区索引,本地分区索引(Local )和全局分区索引(Global). 1.本地索引(Local) 本地分区索引使用 LOCAL关键字创建,其分区边界与表相同(即与每个表分区相关联都有一个索引分区),下面 是一个本地分区索引的例子: create table sales_par partitioned by range (year) ( partition p_2009 values less than (2010) partition p_

Locations Section of OpenCascade BRep

Locations Section of OpenCascade BRep eryar@163.com 摘要Abstract:本文结合OpenCascade的BRep格式描述文档和源程序,对BRep格式进行分析,详细说明BRep的数据组织形式.本文主要通过对BRep文件中的Locations部分的读写代码进行分析,来完全理解OpenCascade中的Location部分. 关键字Key Words:OpenCascade, BRep Format, Location, Location Set

jni error-JNI error accessed deleted global reference

问题描述 JNI error accessed deleted global reference 04-18 16:10:20.420: I/dalvikvm(13815): JNI ERROR (app bug): accessed deleted global reference 0x1d5004ea 04-18 16:10:20.420: E/dalvikvm(13815): VM aborting 04-18 16:10:20.420: A/libc(13815): Fatal sign

ORACLE 12C Partial Global/Local Indexes for Partitioned Tables

以前我有个想法,我只想对其中的某个或者某几个分区上创建索引,其他分区不想创建,在12C之前的版本,无论是Local还是Global index,都不能实现该需求,但是从ORACLE 12C开始引进了Partial Global/Local Indexes for Partitioned Tables,解决了该问题,可以在指定的分区上创建本地索引或者全局索引,主要语法是在表或者分区,子分区级别设置[INDEXING { ON | OFF }]创建测试表  代码如下 复制代码 CDB_PDB@CHF

在 JNI 编程中避免内存泄漏

简介: 本文详细论述如何在 JNI 编程中避免内存泄漏.论述了 JNI 编程中可能引发的明显的内存泄漏.本文的重点是阐述 JNI 编程中潜在的内存泄漏,希望读者通过本文对 Local reference 有更深刻的理解,了解 Local reference 表的存在,区分 Local reference 和局部变量,从而认识到 Local reference 可能引发的 native memory 内存泄漏 JNI 编程简介 JNI,Java Native Interface,是 native

Java 程序死锁问题原理及解决方案

 Java 语言通过 synchronized 关键字来保证原子性,这是因为每一个 ob ject 都有一个隐含的锁,这个也称作监视器对象.在进入 synchronized 之前自动获取此内部锁,而一旦离开此方式,无论是完成或者中断都会自动释放锁.显然这是一个独占锁,每个锁请求之间是互斥的.相对于众多高级锁 (Lock/ReadWriteLock 等),synchronized 的代价都比后者要高.但是 synchronzied 的语法比较简单,而且也比较容易使用和理解.Lock 一旦调用了 l

Java并发编程【1.2时代】

    本文介绍了Java原生的多线程技术(1.2),通过详细介绍wait和notify相关的机制.基础的多线程技术以及基于这些技术的等待超时.线程间的通信技术和线程池高阶技术,最后通过一个基于线程池的简单文本web服务器-MollyServer,来阐明多线程带来好处.通过介绍这些技术,展示了在没有使用Java并发包的时代(1.5-)是如何完成Java的多线程编程,为理解Java5提供了良好帮助. 线程简介        Java从诞生开始就明智的选择内置对多线程的支持,这将Java语言同其他同

急求。。。。。看下java的dump文件,会这样

问题描述 急求.....看下java的dump文件,会这样 2015-03-18 22:38:54 Full thread dump Java HotSpot(TM) Client VM (20.1-b02 mixed mode, sharing): "Attach Listener" daemon prio=10 tid=0x089f1c00 nid=0x1df1 waiting on condition [0x00000000] java.lang.Thread.State: RU

怎样使用jstack诊断Java应用程序故障(转)

          最近一段时间,我们的生产系统升级频繁出现故障,具体故障现象是启动后10来分钟就出现交易缓慢,处理线程耗尽等现象,并且故障发生的频率蛮高的.经过详细的诊断和排查,终于发现了问题,是groovy在osgi中运行会出现classloader死锁,最后我们也解决了这个问题.         如果单靠通过查看代码是很难去发现这个问题,在这一次故障排查中,我也学到了怎样更好的使用jvm监控工具来进行诊断,主要用到了jstack和jmap命令,jmap上次已经讲过就不再讲了,下面就一个例子