Как блок синхронизации в производительности Java зависит от размера объекта, на котором выполняется синхронизация?
synchorized (lock) {
//some code here
}
Представьте, что блокировка может быть просто new Object()
поскольку она используется или может быть экземпляром неизменяемого класса, но с огромным количеством инициализированных полей.
synchronized
не влияет размер объекта, поскольку он является (небольшим) семафором на объекте, проблемы производительности связаны с тем, как несколько потоков обращаются к объекту, другими словами, о том, как приложение архивировано.
Производительность синхронизации не зависит от размера объекта, на который вы синхронизируете. Однако использование "большого" объекта для синхронизации может повредить производительность в других областях - во-первых, для его инициализации может потребоваться время, а во-вторых, оно будет зависеть от памяти, вызывая больше сбоев страницы и т.д. (Предполагая, что это не требуется вашим кодом независимо от того, в этом случае нет смысла хранить дополнительный объект только для целей синхронизации).
synchorized is not affected by the object size..
+1