在此页面甲骨文的Java HotSpot虚拟机的选项,它会列出-XX:+UseCompressedStrings作为默认选项和.但是在Java 6更新29中,默认情况下它处于关闭状态,并且在Java 7 update 2中它会报告警告
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option UseCompressedStrings; support was removed in 7.0
Run Code Online (Sandbox Code Playgroud)
有谁知道删除此选项背后的想法?
有了-mx2g这个例子,选项打开了4.541秒,在Java 6更新29中关闭了5.206秒.很难看出它会影响性能.
注意:Java 7更新2需要2.0 G,而没有压缩字符串的Java 6更新29需要1.8 GB,压缩字符串只需要1.0 GB.
如果我有:
int c[] = new int[10];
Run Code Online (Sandbox Code Playgroud)
和
int a[][] = new int[2][3];
Run Code Online (Sandbox Code Playgroud)
一般而言
一个n*m*..*j数组
如何考虑参考变量,我如何计算实际内存使用量?
我目前正在HashSet中存储一个单词列表(大约120,000个),目的是用作列表来检查被激活的单词,看它们是否拼写正确,只返回是或否.
我想知道是否有办法做到这一点,占用更少的内存.目前120,000个单词约为12meg,单词读取的实际文件大约为900kb.
有什么建议?
提前致谢
我正在编写一个严格读取文本文件(.txt)的java应用程序.这些文件最多可包含120,000个单词.
该应用程序需要存储所有+120,000字.它需要将它们命名为word_1,word_2等.它还需要访问这些单词以对它们执行各种方法.
这些方法都与字符串有关.例如,将调用一个方法来说明word_80中有多少个字母.将调用另一种方法来说明word_2200中的特定字母.
另外,有些方法会比较两个单词.例如,将调用一个方法来将word_80与word_2200进行比较,并且需要返回具有更多字母的方法.将调用另一种方法将word_80与word_2200进行比较,并且需要返回两个单词共享的特定字母.
我的问题是:由于我几乎只使用Strings,最好将这些单词存储在一个大型ArrayList中吗?几个小的ArrayLists?或者我应该使用其他许多存储可能性之一,如Vectors,HashSets,LinkedLists?
我的两个主要问题是1.)访问速度,以及2.)拥有尽可能多的预先构建的方法.
提前谢谢你的帮助!!
哇!感谢大家对我的问题做出如此快速的回应.你的所有建议都对我帮助很大.我正在思考并考虑您的反馈中提供的所有选项.
请原谅我的任何模糊性; 让我来解答你的问题:
Q)英语?
A)文本文件实际上是用英文书写的.用第二语言出现一个单词很少见 - 但并非不可能.我将文本文件中非英语单词的百分比设为.0001%
Q)家庭作业?
A)我现在正在微笑地看着我的问题的措辞.是的,它确实类似于学校作业.但不,这不是功课.
Q)重复?
A)是的.可能每五个左右的单词,考虑连词,文章等.
问)访问?
A)随机和顺序.当然,一种方法可以随机定位一个单词.同样可能一种方法想要在word_1和word_120000之间顺序查找匹配的单词.这导致了最后一个问题......
Q)迭代整个列表?
A)是的.
此外,我计划发展这个程序,以执行许多其他方法.我为我的模糊性再次道歉.(细节确实让世界变得与众不同,不是吗?)
干杯!