public List<List<String>> getAllInfo(String dictionaryName) throws Exception {
        List<List<String>> allInfo = Lists.newArrayList();
        lock.lock();
        try {
            for (Map.Entry<Long, Dictionary> entry : dictionariesMapById.entrySet()) {
                Dictionary dictionary = entry.getValue();
                if (dictionaryName != null && !dictionary.getDictionaryName().equals(dictionaryName)) {
                    continue;
                }

                allInfo.add(dictionary.getInfo());

                Map<TNetworkAddress, PProcessDictionaryCacheResult> resultMap = getDictionaryStatistic(dictionary);
                
                String memoryUsage = "";
                for (Map.Entry<TNetworkAddress, PProcessDictionaryCacheResult> result : resultMap.entrySet()) {
                    TNetworkAddress address = result.getKey();
                    memoryUsage += address.getHostname() + ":" + String.valueOf(address.getPort()) + " : ";

                    if (result.getValue() != null) {
                        memoryUsage += String.valueOf(result.getValue().dictionaryMemoryUsage) + ", ";
                    } else {
                        memoryUsage += "Can not get Memory info" + ", ";
                    }
                }
                allInfo.get(allInfo.size() - 1).add(memoryUsage.substring(0, memoryUsage.length() - 2));
            }
        } finally {
            lock.unlock();
        }
        return allInfo;
    }
@Test
    public void testShowDictionary() throws Exception {
        dictionaryMgr.getAllInfo("dict");
    }