可能是一个愚蠢的问题,但是......
对于基本Java数据结构将消耗多少内存有什么好的指导方针吗?
:具有int成员和String
成员的简单POJO会消耗多少内存(比如说拥有10个char字符串)? 10个所述对象中List
消耗了多少内存?
等
答案 0 :(得分:6)
RAM足迹
http://java.sun.com/docs/books/performance/1st_edition/html/JPRAMFootprint.fm.html
字符串/对象内存使用
http://www.javamex.com/tutorials/memory/string_memory_usage.shtml
答案 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)
Gary Sevitsky撰写了几篇关于分析和控制Java程序中内存膨胀的论文。最近his publication list的一半看起来与您的查询相关。
我参加了a tutorial of his at OOPSLA 2008关于这个主题的文章,发现它很好地介绍了这个令人恐惧的,主要是避免使用Java的方面。