解释琐事:典型堆中有多少个活动集合?

时间:2012-02-01 23:52:58

标签: java memory-management

我正在阅读演示文稿"Building memory efficient Java applications",并在幻灯片11上看到他们问的问题:“典型堆中有多少个活动集合?”

答案是10k到数百万。

我会非常谦虚地说我不知道​​从哪里开始这个问题。

什么是直播收藏与“非直播收藏”?通过集合,它们是指java.util.collections吗?

集合是否存在于堆中?我想因为它们没有在堆栈上分配,所以只留下了堆。

有几千万集合生活在堆上的启示暗示了什么?我只能假设这是一件坏事。

3 个答案:

答案 0 :(得分:2)

是的,他们指的是java.util个收藏品。 (他们会详细介绍每种集合类型 - HashSetArrayList,等等 - 所以是的。)

集合确实存在于堆上,但是一旦它们被垃圾收集 - 一旦它们没有被正在运行的应用程序引用 - 它们就不被认为是“活动的”。

堆上的大量集合并不是坏事 - 它只是表明集合的使用频繁,以保证仔细查看集合实现,特别是它们的内存效率。 (人们广泛使用好的抽象可能是件好事!)

他们几乎肯定不会只谈论一个应用程序 - 我坦率地假设他们采用了许多实际应用程序并对其进行了分析。

答案 1 :(得分:0)

实时意味着仍有对它们的引用。那就是 - 他们没有资格进行垃圾收集。由于演示文稿是关于内存效率的,我猜它们意味着集合(是的,java.util.Set / List / Etc)是常用的,从内存的角度来看,选择正确的集合很重要。

答案 2 :(得分:-1)

他们正在谈论他们的特定应用,你的可能有任意数量的集合,如果你不使用任何集合,甚至是零。