ITPub博客

首页 > Linux操作系统 > Linux操作系统 > jni的小麻烦

jni的小麻烦

原创 Linux操作系统 作者:clkrst 时间:2008-09-19 19:03:05 0 删除 编辑
这两天又遇到一些jni的问题。首先是java的测试程序会随机的当掉。这个问题后来发现是因为我们的native method的实现里为了效率,缓存了一些java对象(主要是jclass,java类的句柄),但是忘记把他们设成global reference了,这样jvm在进行垃圾回收的时候,就把这些对象释放了,所以后面的native method里面对这些对象的访问当然就死掉了。

这个问题的解决还是比较顺利,但是另外一个问题的解决就没哪么清楚了。

具体是这样的,我们的native method里面构建了一个java的对象,是一个图像的缩略图,返回的对象里面有三个字段:width, height和imageBitmapData。然后java的应用程序负责根据这些数据,构造一个BufferedImage。一般情况是一个循环,里面不断这么做,处理一堆缩略图。结果发现到一定数量,就死了。

这个问题后来查了半天,也没头绪。后来我把java程序重新换个方法实现了,就ok了,现在也不知道到底是怎么回事。我猜也许还是jni的local/global reference这种东西没处理好,结果垃圾回收让程序找不到北了。我的重新实现只是导致jvm的垃圾回收没哪么奏效了而已。

总之,涉及jni,总还是有点小小麻烦的。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/67063/viewspace-450399/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 背心上的字
下一篇: handles leak
请登录后发表评论 登录
全部评论

注册时间:2007-12-19

  • 博文量
    37
  • 访问量
    170992