总计数列
Total Count 定义为对象总数(见Android Studio source),具体如下:
new AttributeColumn<>(
"Total Count",
() -> new SimpleColumnRenderer<ClassifierSet>(
value -> Integer.toString(value.getAdapter().getTotalObjectCount()),
value -> null,
SwingConstants.RIGHT),
这个getTotalObjectCount()is defined as:
public int getTotalObjectCount() {
return mySnapshotObjectCount + myDeltaAllocations - myDeltaDeallocations;
}
递增方法
mySnapshotObjectCount 的值在 addSnapshotInstanceObject 内部递增,其中包含有用的注释:
将实例添加到基线快照并更新记帐
“总”值。
myDeltaAllocations 和 myDeltaDeallocations 值递增 inside addDeltaInstanceInformation:
if (isAllocation) {
myDeltaAllocations++;
}
else {
myDeltaDeallocations++;
}
这称为inside partition,其中包含有用的评论:
根据当前的ClassifierSet 策略在snapshotInstances 和myDeltaInstances 中划分InstanceObjects。这将消耗输入中的实例。
此snapshotInstance 与用于递增mySnapshotInstanceObjectCount 的值相同,因此表明所有 3 个值都非常紧密地联系在一起,是在创建分区(快照)时创建的,并且所有因素都计入总计数。
最终公式
所以,最终的答案是:
Total Count = Snapshot objects + New allocations - New deallocations
- 快照对象 = 在快照之前分配的对象实例数。
- 新分配 = 快照期间的分配数。
- 新解除分配 = 快照期间解除分配的次数。
该等式的定义与 Axifive 在另一个答案和链接视频中所述的内容相匹配。