notes-computer-programming-programmingLanguageDesign-prosAndCons-everyObjectIsAMonitor

" 3) Everything is a monitor. In Java and the JVM, every object is a monitor, meaning that you can synchronize on any object. This is incredibly wasteful at the JVM level. Senior JVM guys have indicated large percentage improvements in JVM space and performance if we removed the requirement that every object can be synchronized on. (Instead, you would have specific classes like Java 5 Lock) " (presented as a clear mistake in java by http://blog.joda.org/2010/09/next-big-jvm-language_964.html )

i dont quite understand this -- can't the compiler see at compile time if there are any synchronized methods, and if not, make the object not a monitor? or are there other ways to synchronize objects in java that i am forgetting?