protected void report(String resource_key, long bytes) { if (progress_listeners.size() > 0) { report(resource_key, DisplayFormatters.formatByteCountToKiBEtc(bytes)); } }
private void buildOptions( final Composite parent, final PlatformManager platform, final Composite area, boolean rebuild) throws PlatformManagerException { if (rebuild) { Control[] kids = area.getChildren(); for (Control k : kids) { k.dispose(); } } String[] options = platform.getExplicitVMOptions(); { // max mem long max_mem = AEMemoryMonitor.getJVMLongOption(options, "-Xmx"); final int MIN_MAX_JVM = 32 * 1024 * 1024; GridData gridData = new GridData(); Label label = new Label(area, SWT.NULL); label.setLayoutData(gridData); Messages.setLanguageText(label, "jvm.max.mem", new String[] {encodeDisplayLong(MIN_MAX_JVM)}); gridData = new GridData(); gridData.widthHint = 125; final StringParameter max_vm = new StringParameter(area, "jvm.max.mem", "", false); max_vm.setLayoutData(gridData); max_vm.setValue(max_mem == -1 ? "" : encodeDisplayLong(max_mem)); max_vm.addChangeListener( new ParameterChangeAdapter() { private String last_value; public void parameterChanged(Parameter p, boolean caused_internally) { if (max_vm.isDisposed()) { max_vm.removeChangeListener(this); return; } String val = max_vm.getValue(); if (last_value != null && last_value.equals(val)) { return; } last_value = val; try { long max_mem = decodeDisplayLong(val); if (max_mem < MIN_MAX_JVM) { throw (new Exception("Min=" + encodeDisplayLong(MIN_MAX_JVM))); } String[] options = platform.getExplicitVMOptions(); options = AEMemoryMonitor.setJVMLongOption(options, "-Xmx", max_mem); long min_mem = AEMemoryMonitor.getJVMLongOption(options, "-Xms"); if (min_mem == -1 || min_mem > max_mem) { options = AEMemoryMonitor.setJVMLongOption(options, "-Xms", max_mem); } platform.setExplicitVMOptions(options); buildOptions(parent, platform, area, true); } catch (Throwable e) { String param_name = MessageText.getString("jvm.max.mem"); int pos = param_name.indexOf('['); if (pos != -1) { param_name = param_name.substring(0, pos).trim(); } MessageBoxShell mb = new MessageBoxShell( SWT.ICON_ERROR | SWT.OK, MessageText.getString("ConfigView.section.invalid.value.title"), MessageText.getString( "ConfigView.section.invalid.value", new String[] {val, param_name, Debug.getNestedExceptionMessage(e)})); mb.setParent(parent.getShell()); mb.open(null); } } }); label = new Label(area, SWT.NULL); gridData = new GridData(GridData.FILL_HORIZONTAL); label.setLayoutData(gridData); Long max_heap_mb = AEMemoryMonitor.getMaxHeapMB(); if (max_heap_mb > 0) { Messages.setLanguageText( label, "jvm.max.mem.current", new String[] { DisplayFormatters.formatByteCountToKiBEtc(max_heap_mb * 1024 * 1024, true) }); } } { // min mem final int MIN_MIN_JVM = 8 * 1024 * 1024; long min_mem = AEMemoryMonitor.getJVMLongOption(options, "-Xms"); GridData gridData = new GridData(); Label label = new Label(area, SWT.NULL); label.setLayoutData(gridData); Messages.setLanguageText(label, "jvm.min.mem", new String[] {encodeDisplayLong(MIN_MIN_JVM)}); gridData = new GridData(); gridData.widthHint = 125; final StringParameter min_vm = new StringParameter(area, "jvm.min.mem", "", false); min_vm.setLayoutData(gridData); min_vm.setValue(min_mem == -1 ? "" : encodeDisplayLong(min_mem)); min_vm.addChangeListener( new ParameterChangeAdapter() { private String last_value; public void parameterChanged(Parameter p, boolean caused_internally) { if (min_vm.isDisposed()) { min_vm.removeChangeListener(this); return; } String val = min_vm.getValue(); if (last_value != null && last_value.equals(val)) { return; } last_value = val; try { long min_mem = decodeDisplayLong(val); if (min_mem < MIN_MIN_JVM) { throw (new Exception("Min=" + encodeDisplayLong(MIN_MIN_JVM))); } String[] options = platform.getExplicitVMOptions(); options = AEMemoryMonitor.setJVMLongOption(options, "-Xms", min_mem); long max_mem = AEMemoryMonitor.getJVMLongOption(options, "-Xmx"); if (max_mem == -1 || max_mem < min_mem) { options = AEMemoryMonitor.setJVMLongOption(options, "-Xmx", min_mem); } platform.setExplicitVMOptions(options); buildOptions(parent, platform, area, true); } catch (Throwable e) { String param_name = MessageText.getString("jvm.min.mem"); int pos = param_name.indexOf('['); if (pos != -1) { param_name = param_name.substring(0, pos).trim(); } MessageBoxShell mb = new MessageBoxShell( SWT.ICON_ERROR | SWT.OK, MessageText.getString("ConfigView.section.invalid.value.title"), MessageText.getString( "ConfigView.section.invalid.value", new String[] {val, param_name, Debug.getNestedExceptionMessage(e)})); mb.setParent(parent.getShell()); mb.open(null); } } }); label = new Label(area, SWT.NULL); gridData = new GridData(GridData.FILL_HORIZONTAL); label.setLayoutData(gridData); } { // max DIRECT mem final int MIN_DIRECT_JVM = 32 * 1024 * 1024; final String OPTION_KEY = "-XX:MaxDirectMemorySize="; long max_direct = AEMemoryMonitor.getJVMLongOption(options, OPTION_KEY); GridData gridData = new GridData(); Label label = new Label(area, SWT.NULL); label.setLayoutData(gridData); Messages.setLanguageText( label, "jvm.max.direct.mem", new String[] {encodeDisplayLong(MIN_DIRECT_JVM)}); gridData = new GridData(); gridData.widthHint = 125; final StringParameter max_direct_vm = new StringParameter(area, "jvm.max.direct.mem", "", false); max_direct_vm.setLayoutData(gridData); max_direct_vm.setValue(max_direct == -1 ? "" : encodeDisplayLong(max_direct)); max_direct_vm.addChangeListener( new ParameterChangeAdapter() { private String last_value; public void parameterChanged(Parameter p, boolean caused_internally) { if (max_direct_vm.isDisposed()) { max_direct_vm.removeChangeListener(this); return; } String val = max_direct_vm.getValue(); if (last_value != null && last_value.equals(val)) { return; } last_value = val; try { long max_direct = decodeDisplayLong(val); if (max_direct < MIN_DIRECT_JVM) { throw (new Exception("Min=" + encodeDisplayLong(MIN_DIRECT_JVM))); } String[] options = platform.getExplicitVMOptions(); options = AEMemoryMonitor.setJVMLongOption(options, OPTION_KEY, max_direct); platform.setExplicitVMOptions(options); buildOptions(parent, platform, area, true); } catch (Throwable e) { String param_name = MessageText.getString("jvm.max.direct.mem"); int pos = param_name.indexOf('['); if (pos != -1) { param_name = param_name.substring(0, pos).trim(); } MessageBoxShell mb = new MessageBoxShell( SWT.ICON_ERROR | SWT.OK, MessageText.getString("ConfigView.section.invalid.value.title"), MessageText.getString( "ConfigView.section.invalid.value", new String[] {val, param_name, Debug.getNestedExceptionMessage(e)})); mb.setParent(parent.getShell()); mb.open(null); } } }); label = new Label(area, SWT.NULL); gridData = new GridData(GridData.FILL_HORIZONTAL); label.setLayoutData(gridData); Messages.setLanguageText(label, "jvm.max.direct.mem.info"); } // all options Label label = new Label(area, SWT.NULL); GridData gridData = new GridData(GridData.FILL_HORIZONTAL); gridData.horizontalSpan = 3; label.setLayoutData(gridData); Messages.setLanguageText(label, "jvm.options.summary"); for (String option : options) { label = new Label(area, SWT.NULL); label.setText(option); gridData = new GridData(); gridData.horizontalSpan = 3; gridData.horizontalIndent = 20; label.setLayoutData(gridData); } if (rebuild) { parent.layout(true, true); } }