java - 将 Map keySet 转换为 String 数组时出现 OOM 错误 - Android
问题描述
我有以下 util 类
class Util {
private static Map<String, String> params;
public static String getSignedUrl(Context context) {
params= null; // reset previous instance
params= new HashMap<>();
...
addDefaultParams();
addCustomParams();
String signedUrl = getSignedUrl();
....
return signedUrl;
}
private static String getSignedUrl() {
String[] keyArray = params.keySet().toArray(new String[0]); // OOM error here!
.....
return signedUrl;
}
private static void addDefaultParams() {
//add some default params
params.add(key, value);
}
private static void addCustomParams() {
//add some custom params
params.add(key, value);
}
}
从下面行的firebase堆栈跟踪导致OutOfMemoryError
String[] keyArray = params.keySet().toArray(new String[0]);
是因为params
是静态字段吗?但是我正在重置以前的实例,params
所以我不确定为什么这会导致 OOM 问题。
对此的任何帮助将不胜感激。提前致谢!
编辑 堆栈跟踪
Fatal Exception: java.lang.OutOfMemoryError
Failed to allocate a 186909524 byte allocation with 16777216 free bytes and 262MB until OOM
java.lang.reflect.Array.createObjectArray (Array.java)
java.util.AbstractCollection.toArray (AbstractCollection.java:198)
.......
.......
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1133)
java.lang.Thread.run (Thread.java:760)
解决方案
推荐阅读
- java - 无法加载 ApplicationContext java.lang.IllegalStateException: 无法加载 ApplicationContext
- python - discord.py 如何通过频道名称查找频道 ID
- javascript - 提交按钮在基于 jquery ajax 的网页上不起作用
- python - 从python编辑具有root权限的文件
- azure - 批量复制/删除容器中的一些 blob
- algorithm - 使用更新计算段中的反转
- java - 显示获取数字阶乘的整个计算(java)
- python - 如何在 Inkscape 中将 Matplotlib Latex 作为带有 Tex 字体的文本导入?
- sql - Azure / Transact SQL:动态创建同名表的视图或在视图创建后添加表
- mysql - 从两个关系表中选择字段并在 MySQL 中格式化结果