私のAndroidアプリケーションでは、ConcurrentHashMapを使用しています。ただ、get操作、そして流れの上に積み重ねjava.util.concurrent.ConcurrentHashMap.get()throw StackOverflowError
デバイスモデル:。NX511J アンドロイドOS:5.1.1 のAndroid SDK:ここでは22
がフルスタックトレースは次のとおりです。
java.lang.StackOverflowError: stack size 1036KB
(13000 same stack trace)
at java.util.concurrent.ConcurrentHashMap$ForwardingNode.find(ConcurrentHashMap.java:1507)
at java.util.concurrent.ConcurrentHashMap$ForwardingNode.find(ConcurrentHashMap.java:1515)
at java.util.concurrent.ConcurrentHashMap$ForwardingNode.find(ConcurrentHashMap.java:1515)
at java.util.concurrent.ConcurrentHashMap$ForwardingNode.find(ConcurrentHashMap.java:1515)
at java.util.concurrent.ConcurrentHashMap$ForwardingNode.find(ConcurrentHashMap.java:1515)
at java.util.concurrent.ConcurrentHashMap$ForwardingNode.find(ConcurrentHashMap.java:1515)
at java.util.concurrent.ConcurrentHashMap$ForwardingNode.find(ConcurrentHashMap.java:1515)
at java.util.concurrent.ConcurrentHashMap$ForwardingNode.find(ConcurrentHashMap.java:1515)
at java.util.concurrent.ConcurrentHashMap$ForwardingNode.find(ConcurrentHashMap.java:1515)
at java.util.concurrent.ConcurrentHashMap$ForwardingNode.find(ConcurrentHashMap.java:1515)
at java.util.concurrent.ConcurrentHashMap$ForwardingNode.find(ConcurrentHashMap.java:1515)
at java.util.concurrent.ConcurrentHashMap$ForwardingNode.find(ConcurrentHashMap.java:1515)
at java.util.concurrent.ConcurrentHashMap$ForwardingNode.find(ConcurrentHashMap.java:1515)
at java.util.concurrent.ConcurrentHashMap$ForwardingNode.find(ConcurrentHashMap.java:1515)
at java.util.concurrent.ConcurrentHashMap$ForwardingNode.find(ConcurrentHashMap.java:1515)
at java.util.concurrent.ConcurrentHashMap$ForwardingNode.find(ConcurrentHashMap.java:1515)
at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:754)
at com.tmall.wireless.minsk.internal.store.impl.ConfigStoreImpl.c(ConfigStoreImpl.java:526)
at com.tmall.wireless.minsk.internal.store.impl.ConfigStoreImpl.a(ConfigStoreImpl.java:461)
at mwo.a(MinskImpl.java:265)
at jfd.a(TMConfigCenterManager.java:186)
at ogf.c(TMRewriteEngine.java:177)
at ogf$1.run(TMRewriteEngine.java:141)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
ソースコードを(私はそれが問題を使用していないと思う):
private final ConcurrentMap<String, Module> immutableLocalCache = new ConcurrentHashMap<>();
private Module getFromLocal(String moduleName) {
Module module = immutableLocalCache.get(moduleName);// Stack over flow
if (null != module) {
return module;
}
//...
try {
Module ret = MinskDataConvertUtils.createMinskModule(data);
immutableLocalCache.put(ret.name, ret);
return ret;
} catch (Exception e) {
LogUtils.exception(e);
return null;
}
}
あなたのコードといくつかのコンテキストを投稿できますか?スタックトレースから何が起こったのかを言うのは難しいです。 – pablochan
@pablochan android 5.1.1、単なる単純な呼び出し、何も違う – teaey
あなたはそのマップにいくつのエントリを持っていますか? – pablochan