- 
    Enhancement 
- 
    Resolution: Fixed
- 
     P4 P4
- 
    None
- 
        b21
| Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build | 
|---|---|---|---|---|---|---|
| JDK-8295195 | 11.0.18 | Goetz Lindenmaier | P4 | Resolved | Fixed | b01 | 
| JDK-8289719 | 11.0.17-oracle | Adithya Haradi Gopal | P4 | Resolved | Fixed | b01 | 
| JDK-8336954 | 8u431 | Adithya Haradi Gopal | P4 | Resolved | Fixed | b04 | 
                    There are a many places where arguments are converted and passed back and forth in String[] and Collections.
For example:
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
argsList.toArray(new String[argsList.size()]));
If we add an overload the createJavaProcessBuilder, that takes a Collection<String> as an argument, then we can write the code above as:
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(argsList);
Other places temporarily put the flags in a String[], where most calls simply lists the arguments in the call:
String[] opts = {Xmx, "-XX:NativeMemoryTracking=detail", "-XX:+UseParallelGC", "-version"};
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(opts);
And some places put the args in a temporary Collection:
LinkedList<String> vmOptions = new LinkedList<>();
vmOptions.add(gc);
vmOptions.add("-Xmx" + minMaxHeap);
vmOptions.add("-XX:+PrintFlagsFinal");
vmOptions.add(VerifyHeapSize.class.getName());
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(vmOptions.toArray(new String[0]));
I'd like to cleanup, simplify, and unify many of these usages.
For example:
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
argsList.toArray(new String[argsList.size()]));
If we add an overload the createJavaProcessBuilder, that takes a Collection<String> as an argument, then we can write the code above as:
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(argsList);
Other places temporarily put the flags in a String[], where most calls simply lists the arguments in the call:
String[] opts = {Xmx, "-XX:NativeMemoryTracking=detail", "-XX:+UseParallelGC", "-version"};
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(opts);
And some places put the args in a temporary Collection:
LinkedList<String> vmOptions = new LinkedList<>();
vmOptions.add(gc);
vmOptions.add("-Xmx" + minMaxHeap);
vmOptions.add("-XX:+PrintFlagsFinal");
vmOptions.add(VerifyHeapSize.class.getName());
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(vmOptions.toArray(new String[0]));
I'd like to cleanup, simplify, and unify many of these usages.
- backported by
- 
                    JDK-8289719 Simplify usages of ProcessTools.createJavaProcessBuilder in our tests -           
- Resolved
 
-         
- 
                    JDK-8295195 Simplify usages of ProcessTools.createJavaProcessBuilder in our tests -           
- Resolved
 
-         
- 
                    JDK-8336954 Simplify usages of ProcessTools.createJavaProcessBuilder in our tests -           
- Resolved
 
-         
- relates to
- 
                    JDK-8248306 gc/stress/gclocker/TestExcessGCLockerCollections.java does not compile -           
- Resolved
 
-         
             (1 links to)
        
     
        