ฉันพบว่า HotSpot แสดงรายการอาร์กิวเมนต์ VM ทั้งหมดใน Management bean ยกเว้น -client และ -server ดังนั้นหากคุณอนุมานอาร์กิวเมนต์ -client / -server จากชื่อ VM และเพิ่มสิ่งนี้ในรายการของ bean Management runtime คุณจะได้รับรายการอาร์กิวเมนต์ทั้งหมด
นี่คือ SSCCE:
import java.util.*;
import java.lang.management.ManagementFactory;
class main {
  public static void main(final String[] args) {
    System.out.println(fullVMArguments());
  }
  static String fullVMArguments() {
    String name = javaVmName();
    return (contains(name, "Server") ? "-server "
      : contains(name, "Client") ? "-client " : "")
      + joinWithSpace(vmArguments());
  }
  static List<String> vmArguments() {
    return ManagementFactory.getRuntimeMXBean().getInputArguments();
  }
  static boolean contains(String s, String b) {
    return s != null && s.indexOf(b) >= 0;
  }
  static String javaVmName() {
    return System.getProperty("java.vm.name");
  }
  static String joinWithSpace(Collection<String> c) {
    return join(" ", c);
  }
  public static String join(String glue, Iterable<String> strings) {
    if (strings == null) return "";
    StringBuilder buf = new StringBuilder();
    Iterator<String> i = strings.iterator();
    if (i.hasNext()) {
      buf.append(i.next());
      while (i.hasNext())
        buf.append(glue).append(i.next());
    }
    return buf.toString();
  }
}
อาจทำให้สั้นลงหากคุณต้องการโต้แย้งใน List<String>อาจจะทำให้สั้นลงถ้าคุณต้องการข้อโต้แย้งในส่วน
หมายเหตุสุดท้าย: เราอาจต้องการขยายสิ่งนี้เพื่อจัดการกับกรณีที่ไม่ค่อยเกิดขึ้นของการมีช่องว่างภายในอาร์กิวเมนต์บรรทัดคำสั่ง