< prev index next >
src/java.base/share/classes/jdk/internal/misc/VM.java
Print this page
*** 24,34 ****
--- 24,37 ----
*/
package jdk.internal.misc;
import static java.lang.Thread.State.*;
+ import java.util.Map;
+ import java.util.HashMap;
import java.util.Properties;
+ import java.util.Collections;
public class VM {
// the init level when the VM is fully initialized
private static final int JAVA_LANG_SYSTEM_INITED = 1;
*** 135,168 ****
* It accesses a private copy of the system properties so
* that user's locking of the system properties object will not
* cause the library to deadlock.
*
* Note that the saved system properties do not include
! * the ones set by sun.misc.Version.init().
*
*/
public static String getSavedProperty(String key) {
! if (savedProps.isEmpty())
! throw new IllegalStateException("Should be non-empty if initialized");
! return savedProps.getProperty(key);
}
// TODO: the Property Management needs to be refactored and
// the appropriate prop keys need to be accessible to the
// calling classes to avoid duplication of keys.
! private static final Properties savedProps = new Properties();
// Save a private copy of the system properties and remove
// the system properties that are not intended for public access.
//
// This method can only be invoked during system initialization.
public static void saveAndRemoveProperties(Properties props) {
if (initLevel() != 0)
throw new IllegalStateException("Wrong init level");
! savedProps.putAll(props);
// Set the maximum amount of direct memory. This value is controlled
// by the vm option -XX:MaxDirectMemorySize=<size>.
// The maximum amount of allocatable direct buffer memory (in bytes)
// from the system property sun.nio.MaxDirectMemorySize set by the VM.
--- 138,190 ----
* It accesses a private copy of the system properties so
* that user's locking of the system properties object will not
* cause the library to deadlock.
*
* Note that the saved system properties do not include
! * the ones set by java.lang.VersionProps.init().
*
*/
public static String getSavedProperty(String key) {
! if (savedProps == null)
! throw new IllegalStateException("Not yet initialized");
! return savedProps.get(key);
! }
!
! /**
! * Gets an unmodifiable view of the system properties saved at system
! * initialization time. This method should only be used
! * for the system properties that are not changed during runtime.
! *
! * Note that the saved system properties do not include
! * the ones set by java.lang.VersionProps.init().
! */
! public static Map<String, String> getSavedProperties() {
! if (savedProps == null)
! throw new IllegalStateException("Not yet initialized");
!
! return savedProps;
}
// TODO: the Property Management needs to be refactored and
// the appropriate prop keys need to be accessible to the
// calling classes to avoid duplication of keys.
! private static Map<String, String> savedProps;
// Save a private copy of the system properties and remove
// the system properties that are not intended for public access.
//
// This method can only be invoked during system initialization.
public static void saveAndRemoveProperties(Properties props) {
if (initLevel() != 0)
throw new IllegalStateException("Wrong init level");
! @SuppressWarnings("unchecked")
! Map<String, String> sp = new HashMap<>((Map)props);
! // only main thread is running at this time, so savedProps and
! // its content will be correctly published to threads started later
! savedProps = Collections.unmodifiableMap(sp);
// Set the maximum amount of direct memory. This value is controlled
// by the vm option -XX:MaxDirectMemorySize=<size>.
// The maximum amount of allocatable direct buffer memory (in bytes)
// from the system property sun.nio.MaxDirectMemorySize set by the VM.
< prev index next >