爪哇国里道爪哇
星期一 六月 05, 2006
JNI中多维数组的处理
最近有朋友问到我,在JNI中,如何来处理多维Java数组,还给了我一个处理String多维数组的实际程序。
那么,问题的关键在于这些多维数组在JNI中是以什么样的形式传递的呢。来看一个例子:
native static void nativePrintArray(String[] array);
native static void nativePrintArray(String[][] arrray);
[Read More]Posted at 04:55下午 六月 05, 2006 by joeys in Java SE | Comments[2]
星期一 四月 10, 2006
JVM垃圾回收和相关参数设置
垃圾回收算法
Java虚拟机可以有两种不同方法来区别活动对象和垃圾: 引用计数(Reference Counting)和跟踪(Tracing)
1. 采用Reference Counting的垃圾回收器
对于采用Reference Counting的垃圾回收器,系统为堆上每一个对象都维护一个计数器,当一个对象被创建并且别引用时,这个计数就被置为1。当有新的变量引用该对象,计数器进行自加运算。当一个引用超出作用范围或者被赋予新值的时候,计数器进行自减运算。引用计数为0的对象,会被作为垃圾回收。当一个对象被回收,该对象所引用的对象的引用计数都会相应减少,因而,一个对象的回收有时会引起其它对象的回收。
Reference Counting方式的垃圾回收器,好处在于可以在很短的时间内运行,不会长时间的中断普通的程序运行,因而在RealTime的系统中应用较为普遍。
Reference Counting方式的垃圾回收器,问题在于无法识别循环引用,比如父类对象还有子类引用的情况,即便父类和子类都已经不再能被访问到(unreachable),引用计数也把它们清除。另外一个问题是引用计数器的加减运算会增加系统的计算开销。
[Read More]
Posted at 04:06下午 四月 10, 2006 by joeys in Java SE | Comments[0]