【发布时间】:2014-02-10 22:09:45
【问题描述】:
我正在尝试查看当我有很多重复字符串时使用了多少内存。我正在使用this answer(底部)中突出显示的方法
这是我创建一个包含一千万个字符串的列表,其中每个字符串只有几个字符。
public class Test1 {
public static void main(String[] args) {
int count = 10000000;
List<String> names = new ArrayList<String>();
for (int i = 0; i < count; i++) {
names.add("test");
}
Runtime rt = Runtime.getRuntime();
long usedMem = rt.totalMemory() - rt.freeMemory();
System.out.println(usedMem / (1024*1024) + " MB");
}
}
我运行它,它显示 88 MB。我不太确定这代表什么,但我只是将它作为一个数字来比较。
这是我再次做同样的测试,除了我用一些 lorem ipsum 文本替换了小字符串
public class Test1 {
public static void main(String[] args) {
int count = 10000000;
List<String> names = new ArrayList<String>();
for (int i = 0; i < count; i++) {
names.add("Lorem ipsum dolor sit amet, brute euismod eleifend te quo, ne qui iudicabit hendrerit. Ea sit dolore assentior prodesset. In ludus adipiscing eos, ius erat graeco at, cu nec melius copiosae. Epicuri suavitate gubergren id sea, possim animal eu nam, cu error libris expetendis his. Te sea agam fabulas, vis eruditi complectitur ei. Ei sale modus vis, pri et iracundia temporibus. Mel mundi antiopam ad.");
}
Runtime rt = Runtime.getRuntime();
long usedMem = rt.totalMemory() - rt.freeMemory();
System.out.println(usedMem / (1024*1024) + " MB");
}
}
我运行它,它又说 88 MB。
这并不是要尝试正确地对内存使用进行基准测试,但我预计 ipsum lorem 字符串的数字会更大一些,因为字符串中的字符数大约是 50 倍。
Java 如何在内存中存储字符串数组?或者,我做错了什么?
【问题讨论】:
-
这与stackoverflow.com/questions/18669755/… 不完全重复,但相似
标签: java