为什么所有Java对象都具有wait()和notify(),这会导致性能下降吗?

为什么所有Java对象都具有wait()和notify(),这会导致性能下降吗?,第1张

为什么所有Java对象都具有wait()和notify(),这会导致性能下降吗?

那么,它确实意味着每个对象有 可能
有一个与之关联的监视器。使用相同的监视器

synchronized
。如果你有决定不服的,以便能够在任何对象上同步,然后
wait()
notify()
不添加任何更多的每个对象的状态。JVM可能会延迟分配实际的监视器(我知道.NET会这样做),但是必须有一些存储空间可以用来说明哪个监视器与对象相关联。诚然,这可能是一个很小的数量(例如3个字节),由于其余对象开销的填充,实际上并不会节省任何内存-
您必须查看每个JVM如何处理内存来说当然。

请注意,仅拥有额外的 方法 不会影响性能(除了由于代码明显存在 于某处 而造成的影响很小)。并不是每个对象,甚至每个类型都有其自己的for

wait()
和代码副本
notify()
。根据vtables的工作方式,每种类型都 可能 为每个继承的方法添加一个额外的vtable条目-
但这仍然仅基于每种类型,而不是基于每个对象。与用于实际对象本身的大量存储相比,这基本上会在噪声中丢失。

就我个人而言,我觉得.NET和Java都通过将监视器与每个对象相关联而犯了一个错误-
我宁愿拥有显式的同步对象。我在有关重新设计java.lang.Object /
System.Object的博客文章中对此进行了更多介绍。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5487225.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存