Java 什么是对象同步开销?
我正在阅读一本使用Java作为工作语言的算法书籍,作者指出每个对象所需的内存包括描述每个基本实例变量和开销(以及填充)所需的内存 开销包括对对象类的引用、垃圾收集信息和同步数据。我得到了前2个,但不知道同步数据包含哪些信息Java 什么是对象同步开销?,java,Java,我正在阅读一本使用Java作为工作语言的算法书籍,作者指出每个对象所需的内存包括描述每个基本实例变量和开销(以及填充)所需的内存 开销包括对对象类的引用、垃圾收集信息和同步数据。我得到了前2个,但不知道同步数据包含哪些信息 我从谷歌那里了解到,这与多线程有关,但仅此而已。那么,对象的同步数据到底是什么呢 可能是指信号量。可以使用synchronized(obj){…}锁定每个对象。如果一个方法被标记为synchronized,这甚至是隐式的。哪个线程持有同步锁很重要,因为同一线程可以多次进入同步
我从谷歌那里了解到,这与多线程有关,但仅此而已。那么,对象的同步数据到底是什么呢 可能是指信号量。可以使用
synchronized(obj){…}
锁定每个对象。如果一个方法被标记为synchronized,这甚至是隐式的。哪个线程持有同步锁很重要,因为同一线程可以多次进入同步块。因此,每个对象都需要存储哪个线程锁定了它,以及(取决于它的实现方式)锁定了多少次。除非您正在实现或修改JVM,否则您永远不需要知道具体的细节。知道开销的存在,以及它的大小,应该足够了。