@NonNull String vmOption, @NonNull JvmDetails.Builder builder) { if (vmOption.startsWith(VM_OPTION_XMS)) { builder.setMinimumHeapSize( parseVmOptionSize(vmOption.substring(VM_OPTION_XMS.length()))); } else if (vmOption.startsWith(VM_OPTION_XMX)) { builder.setMaximumHeapSize( parseVmOptionSize(vmOption.substring(VM_OPTION_XMX.length()))); } else if (vmOption.startsWith(VM_OPTION_MAX_PERM_SIZE)) { builder.setMaximumPermanentSpaceSize( parseVmOptionSize(vmOption.substring(VM_OPTION_MAX_PERM_SIZE.length()))); } else if (vmOption.startsWith(VM_OPTION_RESERVED_CODE_CACHE_SIZE)) { builder.setMaximumCodeCacheSize( parseVmOptionSize( vmOption.substring(VM_OPTION_RESERVED_CODE_CACHE_SIZE.length()))); } else if (vmOption.startsWith(VM_OPTION_SOFT_REF_LRU_POLICY_MS_PER_MB)) { builder.setSoftReferenceLruPolicy( parseVmOptionSize( vmOption.substring(VM_OPTION_SOFT_REF_LRU_POLICY_MS_PER_MB.length()))); builder.setGarbageCollector(JvmDetails.GarbageCollector.CONCURRENT_MARK_SWEEP_GC); break; case "-XX:+UseParallelGC": builder.setGarbageCollector(JvmDetails.GarbageCollector.PARALLEL_GC); break; case "-XX:+UseParallelOldGC": builder.setGarbageCollector(JvmDetails.GarbageCollector.PARALLEL_OLD_GC); break; case "-XX:+UseSerialGC": builder.setGarbageCollector(JvmDetails.GarbageCollector.SERIAL_GC);
/** Gets information about the jvm this code is running in. */ @NonNull public static JvmDetails getJvmDetails() { RuntimeMXBean runtime = HostData.getRuntimeBean(); JvmDetails.Builder builder = JvmDetails.newBuilder() .setName(Strings.nullToEmpty(runtime.getVmName())) .setVendor(Strings.nullToEmpty(runtime.getVmVendor())) .setVersion(Strings.nullToEmpty(runtime.getVmVersion())); for (String vmOption : runtime.getInputArguments()) { parseVmOption(vmOption, builder); } return builder.build(); }