什么是缓存字符串?或者什么是字符串缓存?我在 JNI 中多次阅读过这个术语,但不知道它是什么。
问问题
1533 次
1 回答
1
缓存提高了性能(这对 JNI 很重要)并减少了内存使用。
这是一个简单的字符串缓存示例,如果您对简单的缓存算法如何工作感兴趣 - 但这实际上只是一个示例,我不建议您在代码中实际使用它:
public class StingCache {
static final String[] STRING_CACHE = new String[1024];
static String getCachedString(String s) {
int index = s.hashCode() & (STRING_CACHE.length - 1);
String cached = STRING_CACHE[index];
if (s.equals(cached)) {
return cached;
} else {
STRING_CACHE[index] = s;
return s;
}
}
public static void main(String... args) {
String a = "x" + new Integer(1);
System.out.println("a is: String@" + System.identityHashCode(a));
String b = "x" + new Integer(1);
System.out.println("b is: String@" + System.identityHashCode(b));
String c = getCachedString(a);
System.out.println("c is: String@" + System.identityHashCode(c));
String d = getCachedString(b);
System.out.println("d is: String@" + System.identityHashCode(d));
}
}
于 2012-05-09T06:48:08.833 回答