gpt4 book ai didi

android - 当 hashmap > 512 时 JNI 溢出

转载 作者:太空狗 更新时间:2023-10-29 13:40:58 25 4
gpt4 key购买 nike

使用资源文件,我创建了一个大 HashMap

HashMap<String, String> bigHash = new HashMap<String, String>();
public void createHash(){
String [] items = getResources().getStringArray(R.array.dual_strings);
String [] temp;
for ( String s : items ){
temp = s.split("@");
bigHash.put(temp[0],temp[1]);
}
}

dual_string.xml 充满了像这样的记录 “ sleep @每天最好睡 6 小时以上”

但是,我尝试使用一个大的(~1000 项)dual_strings.xml 文件,应用程序在启动后立即崩溃。查看 LogCag“dalvikvm 无法添加到 JNI 本地引用表(有 512 个条目)”

我可以做些什么来从我的长资源文件中创建和使用大哈希值吗?谢谢

最佳答案

这看起来像是 Android 的 getStringArrayResources native 代码中的错误。我发现已经有一个关于这个的错误。在 native 代码中很容易看出原因(引用是在循环中创建的,但未清除)。

http://code.google.com/p/android/issues/detail?id=5287&q=getArrayStringResource&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars

现在,您必须解决这个错误。您必须将字符串数组拆分为更小的 block ,每个 block <500 个字符串,或者编写您自己的自定义字符串数组加载方法。也许其他人可以提出更好的解决方案。

关于android - 当 hashmap > 512 时 JNI 溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5774335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com