Java内存指南

时间:2010-01-11 21:33:20

标签: java memory jvm memory-management

可能是一个愚蠢的问题,但是......

对于基本Java数据结构将消耗多少内存有什么好的指导方针吗?

:具有int成员和String成员的简单POJO会消耗多少内存(比如说拥有10个char字符串)? 10个所述对象中List消耗了多少内存?

4 个答案:

答案 0 :(得分:6)

答案 1 :(得分:1)

字符串是非常棘手的,因为它们保持下面的字符数组,该数组与其他String对象共享,这些String对象是原始String对象的子字符串。

答案 2 :(得分:0)

我会说字符串为144位(指针为32位,10位字符为80位,int为32位),int为32位,指向对象的指针为32位,为208位。对于对象和指针,10的列表需要2080位,对于下一个和前一个指针,需要额外的32 * 2 * 10,对于列表的长度,需要32个,对于指针,需要32个。这使得总共2784位。根据我对Java的经验以及我认为它需要的经验(又称C),你应用了两倍乘数,使其成为5568位。

如果您担心内存要求,请在一天结束时进行测试并查看!但要测试这么小的数字真的很难......试试几千个。

答案 3 :(得分:0)

IBM Research的

Gary Sevitsky撰写了几篇关于分析和控制Java程序中内存膨胀的论文。最近his publication list的一半看起来与您的查询相关。

我参加了a tutorial of his at OOPSLA 2008关于这个主题的文章,发现它很好地介绍了这个令人恐惧的,主要是避免使用Java的方面。