type=page
status=published
title=Administering the Virtual Machine for the Java Platform
next=threadpools.html
prev=domains.html
~~~~~~

= Administering the Virtual Machine for the Java Platform

[[GSADG00007]][[ablwj]]


[[administering-the-virtual-machine-for-the-java-platform]]
== 4 Administering the Virtual Machine for the Java Platform

This chapter provides procedures for administering the Virtual Machine
for the Java platform (Java Virtual Machine) or JVM machine) in the
{productName} 7 environment by using the
`asadmin` command-line utility.

The following topics are addressed here:

* link:#gepzd[Administering JVM Options]
* link:#ggnde[Administering the Profiler]

Instructions for accomplishing these tasks by using the Administration
Console are contained in the Administration Console online help.

[[gepzd]][[GSADG00544]][[administering-jvm-options]]

=== Administering JVM Options

The Java Virtual Machine is an interpretive computing engine responsible
for running the byte codes in a compiled Java program. The virtual
machine translates the Java byte codes into the native instructions of
the host machine. {productName}, being a Java process, requires a
virtual machine to run and support the Java applications running on it.
JVM settings are part of an {productName} configuration.

The following topics are addressed here:

* link:#ggnes[To Create JVM Options]
* link:#ggnce[To List JVM Options]
* link:#ggnfi[To Delete JVM Options]
* link:#ggnbu[To Generate a JVM Report]

[[ggnes]][[GSADG00359]][[to-create-jvm-options]]

==== To Create JVM Options

Use the `create-jvm-options` subcommand in remote mode to create JVM
options in the Java configuration or the profiler elements of the
`domain.xml` file. If JVM options are created for a profiler, these
options are used to record the settings that initiate the profiler.

1. Ensure that the server is running. Remote subcommands require a running server.
2. Create JVM options by using the
link:reference-manual/create-jvm-options.html#GSRFM00042[`create-jvm-options`] subcommand.
+
To create more than one JVM option, use a colon (:) to separate the
options. If the JVM option itself contains a colon (:), use the
backslash (\) to offset the colon delimiter.
+
Information about properties for the subcommand is included in this help
page.
3. To apply your changes, restart {productName}. See
link:domains.html#ginqj[To Restart a Domain].

[[GSADG00154]][[ghqwm]]
Example 4-1 Creating JVM Options

This example sets multiple Java system properties.

[source]
----
asadmin> create-jvm-options -Dunixlocation=/root/example:
-Dvariable=\$HOME:
-Dwindowslocation=d\\:\\\sun\\\appserver:
-Doption1=-value1
created 4 option(s)
Command create-jvm-options executed successfully.
----

[[GSADG847]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help create-jvm-options` at the command line.

[[ggnce]][[GSADG00360]][[to-list-jvm-options]]

==== To List JVM Options

Use the `list-jvm-options` subcommand in remote mode to list the
existing JVM options.

1. Ensure that the server is running. Remote subcommands require a running server.
2. List JVM options by using the link:reference-manual/list-jvm-options.html#GSRFM00180[`list-jvm-options`]
subcommand.

[[GSADG00155]][[ggphx]]
Example 4-2 Listing JVM Options

This example lists all JVM options.

[source]
----
asadmin> list-jvm-options
-Djava.security.auth.login.config=${com.sun.aas.instanceRoot}/config/login.conf
-XX: LogVMOutput
-XX: UnlockDiagnosticVMOptions
-Dcom.sun.enterprise.config.config_environment_factory_class=com.sun.enterprise.
config.serverbeans.AppserverConfigEnvironmentFactory
-Djavax.net.ssl.keyStore=${com.sun.aas.instanceRoot}/config/keystore.jks
-XX:NewRatio=2
-Djava.security.policy=${com.sun.aas.instanceRoot}/config/server.policy
-Djdbc.drivers=org.apache.derby.jdbc.ClientDriver
-Djavax.net.ssl.trustStore=${com.sun.aas.instanceRoot}/config/cacerts.jks
-client
-Djava.ext.dirs=${com.sun.aas.javaRoot}/lib/ext${path.separator}${com.sun.aas.ja
vaRoot}/jre/lib/ext${path.separator}${com.sun.aas.instanceRoot}/lib/ext${path.se
parator}${com.sun.aas.derbyRoot}/lib
-Xmx512m
-XX:LogFile=${com.sun.aas.instanceRoot}/logs/jvm.log
Command list-jvm-options executed successfully.
----

[[GSADG848]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help list-jvm-options` at the command line.

[[ggnfi]][[GSADG00361]][[to-delete-jvm-options]]

==== To Delete JVM Options

Use the `delete-jvm-options` subcommand in remote mode to delete JVM
options from the Java configuration or profiler elements of the
`domain.xml` file.

1. Ensure that the server is running. Remote subcommands require a running server.
2. List JVM options by using the link:reference-manual/list-jvm-options.html#GSRFM00180[`list-jvm-options`]
subcommand.
3. If necessary, notify users that the JVM option is being deleted.
4. Delete JVM options by using the
link:reference-manual/delete-jvm-options.html#GSRFM00094[`delete-jvm-options`] subcommand.
+
To remove more than one JVM option, use a colon (:) to separate the
options. If the JVM option itself contains a colon, use the backslash
(\) to offset the colon delimiter.
5. To apply your changes, restart {productName}. See
link:domains.html#ginqj[To Restart a Domain].

[[GSADG00156]][[ggpgz]]
Example 4-3 Deleting a JVM Option

This example removes a single JVM option.

[source]
----
asadmin> delete-jvm-options -Dopt1=A

deleted 1 option(s)
Command delete-jvm-options executed successfully.
----

[[GSADG00157]][[ggpkr]]
Example 4-4 Deleting Multiple JVM Options

This example removes multiple JVM options.

[source]
----
asadmin> delete-jvm-options -Doption1=-value1:-Dvariable=\$HOME
deleted 2 option(s)
Command delete-jvm-options executed successfully.
----

[[GSADG849]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help delete-jvm-options` at the command line.

[[ggnbu]][[GSADG00362]][[to-generate-a-jvm-report]]

==== To Generate a JVM Report

Use the `generate-jvm-report` subcommand in remote mode to generate a
JVM report showing the threads (dump of a stack trace), classes, memory,
and loggers for a specified instance, including the domain
administration server (DAS). You can generate the following types of
reports: summary (default), class, thread, log.

1. Ensure that the server is running. Remote subcommands require a running server.
2. Generate the report by using the
link:reference-manual/generate-jvm-report.html#GSRFM00138[`generate-jvm-report`] subcommand.

[[GSADG00158]][[ghhkr]]
Example 4-5 Generating a JVM Report

This example displays summary information about the threads, classes,
and memory.

[source]
----
asadmin> generate-jvm-report --type summary
Operating System Information:
Name of the Operating System: Windows XP
Binary Architecture name of the Operating System: x86, Version: 5.1
Number of processors available on the Operating System: 2
System load on the available processors for the last minute: NOT_AVAILABLE.
(Sum of running and queued runnable entities per minute).
.
,
.
user.home = C:\Documents and Settings\Jennifer
user.language = en
user.name = Jennifer
user.timezone = America/New_York
user.variant =
variable = \$HOME
web.home = C:\Preview\v3_Preview_release\distributions\web\target\
glassfish\modules\web
Command generate-jvm-report executed successfully.
----

[[GSADG850]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help generate-jvm-report` at the command line.

[[ggnde]][[GSADG00545]][[administering-the-profiler]]

=== Administering the Profiler

A profiler generates information used to analyze server performance.

The following topics are addressed here:

* link:#ggneb[To Create a Profiler]
* link:#ggnem[To Delete a Profiler]

[[ggneb]][[GSADG00363]][[to-create-a-profiler]]

==== To Create a Profiler

A server instance is tied to a particular profiler by the profiler
element in the Java configuration. If JVM options are created for a
profiler, the options are used to record the settings needed to activate
a particular profiler. Use the `create-profiler` subcommand in remote
mode to create the profiler element in the Java configuration.

Only one profiler can exist. If a profiler already exists, you receive
an error message that directs you to delete the existing profiler before
creating a new one.

1. Ensure that the server is running. Remote subcommands require a running server.
2. Create a profiler by using the link:reference-manual/create-profiler.html#GSRFM00050[`create-profiler`]
subcommand.
+
Information about properties for the subcommand is included in this help
page.
3. To apply your changes, restart {productName}.
+
See link:domains.html#ginqj[To Restart a Domain].

[[GSADG00159]][[ggpla]]
Example 4-6 Creating a Profiler

This example creates a profiler named `sample_profiler`.

[source]
----
asadmin> create-profiler --classpath=/home/appserver/ --nativelibrarypath=/u/home/lib
--enabled=false --property=defaultuser=admin:password=adminadmin sample_profiler
Command create-profiler executed successfully.
----

[[GSADG851]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help create-profiler` at the command line.

[[ggnem]][[GSADG00365]][[to-delete-a-profiler]]

==== To Delete a Profiler

Use the `delete-profiler` subcommand in remote mode to delete the
profiler element from the Java configuration. You can then create a new
profiler.

1. Ensure that the server is running. Remote subcommands require a running server.
2. Delete the profiler by using the link:reference-manual/delete-profiler.html#GSRFM00102[`delete-profiler`]
subcommand.
3. To apply your changes, restart {productName}.
+
See link:domains.html#ginqj[To Restart a Domain].

[[GSADG00161]][[ggpkc]]
Example 4-7 Deleting a Profiler

This example deletes the profiler named `sample_profiler`.

[source]
----
asadmin> delete-profiler sample_profiler
Command delete-profiler executed successfully.
----

[[GSADG852]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help delete-profiler` at the command line.


