我在Java中有一个包含String的对象.我很好奇String的内存使用情况如何.我正在尝试优化我的程序的内存使用量,应用程序将有大约10000个这样的对象.对于诸如"Hello World"之类的字符串,内存使用量是多少?
我正在努力解决古老的anagram问题.感谢那里的许多教程,我能够遍历一组字符串,递归地找到所有排列,然后将它们与英语单词列表进行比较.我发现的问题是,在大约三个单词(通常是"变态"之类的东西)之后,我得到一个OutOfMemory错误.我尝试将我的批次分成小集,因为它似乎是消耗我所有记忆的递归部分.但即便只是"变态"锁定它......
在这里,我将文件中的单词读入List
Scanner scanner = new Scanner(resource.getInputStream());
while (scanner.hasNext()) {
String s = scanner.nextLine();
uniqueWords.add(s.toLowerCase());
}
Run Code Online (Sandbox Code Playgroud)
现在我将它们分成更小的集合并调用类来生成字谜:
List<List<String>> subSets = Lists.partition(new ArrayList(uniqueWords), SET_SIZE);
for (List<String> set: subSets) {
// tried created as class attribute & injection, no difference
AnagramGenerator anagramGenerator = new AnagramGenerator();
List<Word> anagrams = anagramGenerator.createWordList(set);
wordsRepository.save(anagrams);
LOGGER.info("Inserted {} records into the database", anagrams.size());
}
Run Code Online (Sandbox Code Playgroud)
最后我的发电机:
public class AnagramGenerator {
private Map<String, List<String>> map = new Hashtable<>();
public List<Word> createWordList(List<String> dictionary) {
buildAnagrams(dictionary);
List<Word> words = new ArrayList<>();
for …Run Code Online (Sandbox Code Playgroud)