我已经使用-agentlib:hprof=cpu=samples
对我的多用途程序进行了基准测试
很惊讶在结果中找到以下行:
rank self accum count trace method
1 52.88% 52.88% 8486 300050 java.lang.Object.hashCode
我从不在程序中显式调用hashCode()。
这可能是什么原因?我如何理解这次“浪费”的来源以及它是否正常?
谢谢,
大卫
最佳答案
您很可能会非常密集地使用诸如HashMap之类的Map。
HashMap使用hashCode
分发对象。如果要使用具有此数据结构的许多对象,则正确实现.equals
和.hashCode
方法非常重要。
请参阅:有效的Java项目8:Always override hashCode when you override equals