0

和

从上面从 android studio 堆转储截取的屏幕截图中,我可以清楚地知道对象哈希码 [ 52675819 ] 与堆转储中对象引用 [ proxyVideoSink@315784776 ] 中显示的内容不匹配。所以我的问题是对象的堆转储中的这个对象参考号[ 315784776 ]是什么,它指的是什么?

此映射的目的是查找在 java 代码中分配的实际对象的位置。

我的 proxyVideoSink 类代码如下供参考:

class ProxyVideoSink : VideoSink {
 private var target: VideoSink? = null
 var isFrameAvailable: Boolean = false
 var hashcode: Int = hashCode()
 var name: String = "test object"
 var toString: String = toString()

 @Synchronized
 override fun onFrame(frame: VideoFrame) {
    isFrameAvailable = true
    if (target == null) {
        return
    }
    target!!.onFrame(frame)
 }

 @Synchronized
 fun setTarget(target: VideoSink?) {
    this.target = target
 }
}
4

1 回答 1

0

该数字是唯一标识每个对象的低级 ID,与哈希码无关。

其他一些分析器为同一类的实例分配唯一编号(例如,从 1、2、3 等开始计数)。Android Studio Profiler 恰好重用了提供的低级 ID,以帮助用户了解他们何时看到不同的对象。也许从 1 开始计数会更直观。

于 2021-05-19T20:42:12.223 回答