4

我正在阅读 android 培训文章:Performance Tips

对象创建从来都不是免费的。具有临时对象的每个线程分配池的分代垃圾收集器可以使分配更便宜,但分配内存总是比不分配内存更昂贵。

临时对象的每个线程分配池是什么?

我没有找到任何关于此的文档。

4

2 回答 2

0

他们所说的,而且他们是对的,对象创建(和后续收集)可能是一个主要的耗时。

如果你看一下这个例子,你会发现内存管理在某一时刻占据了主导地位,并且通过将每个类的已使用对象保存在一个空闲列表中来解决,因此它们可以被有效地重用。

但是,还要注意,在该示例中,内存管理一开始并不是最大的问题在更大的问题被排除之后,它才成为最大的问题。

例如,假设你有一个团队想要减肥,相对于另一个团队。假设团队有
1) 一个 400 磅的人,(对应于其他一些问题)
2) 一个 200 磅的人(对应于内存管理问题),和
3) 一个 100 磅的人(对应于其他一些问题) .
如果整个团队想减掉最多的体重,首先应该集中在哪里?

显然,他们需要在这三个方面都努力,但如果他们错过了这个大个子,他们就不会走得太远。

所以最激进的程序是首先找出最大的问题是什么(不是通过猜测),然后解决它。然后是下一个最大的,依此类推。

最大的秘密是不要猜测。每个人都知道这一点,但他们是怎么做的呢?- 他们还是猜的。根据定义,猜测通常是错误的,忽略了最大的问题。 让程序告诉你最大的问题是什么。 (我在那个例子中使用随机暂停。)

于 2013-07-28T18:38:37.483 回答
0

将其解读为:具有按线程分配、临时对象池的分代垃圾收集器。

每线程垃圾收集是跟踪仅与创建它们的线程关联的对象。在特定线程的垃圾收集时间,确定仅与该线程相关联的哪些对象仍可从与该线程相关联的受限根集到达。任何未确定为可访问的纯线程对象都将被垃圾收集。

于 2013-07-28T16:27:01.303 回答