Permission check is only needed when there is a security manager.
We can delay instantiating the Permission object for performing permission check until there is a security manager.
The following are few examples.
src/share/classes/java/util/logging/LogManager.java
src/share/classes/java/util/prefs/Preferences.java
src/solaris/classes/sun/net/www/protocol/jar/JarFileFactory.java
src/windows/classes/sun/net/www/protocol/jar/JarFileFactory.java
When a ProtectionDomain is being created, the permission collection will be set up even though no permission check will need to be performed if no security manager is installed.
Initializing the permission collection can be deferred until permission check is needed.