type=page
status=published
title=delete-jvm-options
next=delete-lifecycle-module.html
prev=delete-jndi-resource.html
~~~~~~

= delete-jvm-options

[[delete-jvm-options-1]][[GSRFM00094]][[delete-jvm-options]]

== delete-jvm-options

Removes one or more options for the Java application launcher

[[sthref825]]

=== Synopsis

[source]
----
asadmin [asadmin-options] delete-jvm-options [--help]
[--target target] [--profiler={true|false}]
(jvm-option-name[=jvm-option-value]) [:jvm-option-name[=jvm-option-name]]*
----

[[sthref826]]

=== Description

The `delete-jvm-options` subcommand removes one or more command-line
options for the Java application launcher. These options are removed
from the Java configuration `java—config` element or the profiler
`profiler` element of the `domain.xml` file. To see the Java application
launcher options that can be deleted, use the
link:list-jvm-options.html#list-jvm-options-1[`list-jvm-options`(1)]
subcommand.

The deletion of some options requires a server restart for changes to
become effective. Other options are set immediately in the environment
of the domain administration server (DAS) and do not require a restart.

Whether a restart is required depends on the type of option.

* Restart is not required for Java system properties whose names do not
start with `-Djava.` or `-Djavax.` (including the trailing period). For
example, restart is not required for the following Java system property:
+
`-Denvironment=Production`
* Restart is required for the following options:

** Java system properties whose names start with `-Djava.` or `-Djavax.`
(including the trailing period). For example:
+
`-Djava.security.manager`

** Startup parameters for the Java application launcher. For example:
+
`-client`
+
`-Xmx1024m`
+
`-d64`

To restart the DAS, use the
link:restart-domain.html#restart-domain-1[`restart-domain`(1)] command.

This subcommand is supported in remote mode only.

[[sthref827]]

=== Options

asadmin-options::
  Options for the `asadmin` utility. For information about these
  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
`--help`::
`-?`::
  Displays the help text for the subcommand.
`--target`::
  Specifies the target from which you are removing Java application
  launcher options. Valid values are as follows:

  `server`;;
    Specifies the DAS (default).
  instance-name;;
    Specifies a {productName} instance.
  cluster-name;;
    Specifies a cluster.
  configuration-name;;
    Specifies a named configuration.

`--profiler`::
  Indicates whether the Java application launcher options are for the
  profiler. The option must have been set for a profiler for this option
  to be true.

[[sthref828]]

=== Operands

jvm-option-name::
  One or more options delimited by a colon (:). The format of the
  operand depends on the following:

  * If the option has a name and a value, the format is
  option-name=value.
  * If the option has only a name, the format is option-name. For
  example, `-Xmx2048m`.

+
[NOTE]
====
If an option name or option value contains a colon, the backslash
(`\`) must be used to escape the colon in the name or value. Other
characters might also require an escape character. For more
information about escape characters in subcommand options, see the
link:asadmin.html#asadmin-1m[`asadmin`(1M)] man page.
====


[[sthref829]]

=== Examples

[[GSRFM562]][[sthref830]]

==== Example 1   Deleting Java Application Launcher Options

This example removes multiple Java application launcher options.

[source]
----
asadmin> delete-jvm-options -Doption1=value1
"-Doption1=value1:-Doption2=value2"
Command delete-jvm-options executed successfully
----

[[GSRFM563]][[sthref831]]

==== Example 2   Deleting a Java Application Launcher Option From the Profiler

This example removes a Java application launcher startup parameter for
the profiler.

[source]
----
asadmin> delete-jvm-options --profiler=true -XX:MaxPermSize=192m
Command delete-jvm-options executed successfully.
----

[[sthref832]]

=== Exit Status

0::
  subcommand executed successfully
1::
  error in executing the subcommand

[[sthref833]]

=== See Also

link:asadmin.html#asadmin-1m[`asadmin`(1M)]

link:create-jvm-options.html#create-jvm-options-1[`create-jvm-options`(1)],
link:list-jvm-options.html#list-jvm-options-1[`list-jvm-options`(1)],
link:restart-domain.html#restart-domain-1[`restart-domain`(1)]

For more information about the Java application launcher, see the
reference page for the operating system that you are using:

* Oracle Solaris and Linux: java - the Java application launcher
(`http://java.sun.com/javase/7/docs/technotes/tools/solaris/java.html`)
* Windows: java - the Java application launcher
(`http://java.sun.com/javase/7/docs/technotes/tools/windows/java.html`)


