Command to find out -Xms and -Xmx variable values for a given java process?

17,264

Solution 1

Try

jcmd <PID> VM.command_line
jcmd <PID> VM.flags

Solution 2

you can use jps and do it from the command line:

jps # shows pids
jps -v <pid> # shows params
jps -v <localhost:pid> # the host must be indicated

if this is not enough you can do it programmatically inside the program to check the maximum amount of memory that the Java virtual machine will attempt to use:

Runtime.getRuntime().maxMemory()

and you can also use use the class MemoryUsage to get the initial, used and max ammount that can be used for memory management.

MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean();
    memoryBean.getHeapMemoryUsage().getMax()
    memoryBean.getHeapMemoryUsage().getUsed()
    memoryBean.getHeapMemoryUsage().getInit()

Solution 3

I think jmap command will give you everything you want.
usage: jmap -heap {pid}

root@BobServerStation:/usr/local $ jmap -heap 3280
Attaching to process ID 3280, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 24.65-b04

using thread-local object allocation.
Parallel GC with 8 thread(s)

Heap Configuration:
   MinHeapFreeRatio = 0
   MaxHeapFreeRatio = 100
   MaxHeapSize      = 4116709376 (3926.0MB)
   NewSize          = 1310720 (1.25MB)
   MaxNewSize       = 17592186044415 MB
   OldSize          = 5439488 (5.1875MB)
   NewRatio         = 2
   SurvivorRatio    = 8
   PermSize         = 21757952 (20.75MB)
   MaxPermSize      = 85983232 (82.0MB)
   G1HeapRegionSize = 0 (0.0MB)

Heap Usage:
PS Young Generation
Eden Space:
   capacity = 65011712 (62.0MB)
   used     = 42273152 (40.3148193359375MB)
   free     = 22738560 (21.6851806640625MB)
   65.0239021547379% used
From Space:
   capacity = 10485760 (10.0MB)
   used     = 10479760 (9.994277954101562MB)
   free     = 6000 (0.0057220458984375MB)
   99.94277954101562% used
To Space:
   capacity = 10485760 (10.0MB)
   used     = 0 (0.0MB)
   free     = 10485760 (10.0MB)
   0.0% used
PS Old Generation
   capacity = 171442176 (163.5MB)
   used     = 376368 (0.3589324951171875MB)
   free     = 171065808 (163.1410675048828MB)
   0.21953057805332568% used
PS Perm Generation
   capacity = 22020096 (21.0MB)
   used     = 15401488 (14.688003540039062MB)
   free     = 6618608 (6.3119964599609375MB)
   69.94287400018601% used

8464 interned Strings occupying 699456 bytes.
Share:
17,264
Adon Smith
Author by

Adon Smith

Updated on June 14, 2022

Comments

  • Adon Smith
    Adon Smith about 2 years

    I have a java program, which i ran and figured out its process id with jps.

    How can i see what is the value of -Xms and -Xmx variable for this java process ?

  • Adon Smith
    Adon Smith over 9 years
    I am on mac OS 10.10 - when i typed the command jps -v <pid> , it failed- grep: 89038: No such file or directory
  • Adon Smith
    Adon Smith over 9 years
    I don't want to do it programmatically . Need a command only :(
  • SQL.injection
    SQL.injection over 9 years
    @AdonSmith you need to indicate the host. See again my awnser
  • Adon Smith
    Adon Smith over 9 years
    i ran it - jps -v localhost:89038, but it gave me an output - grep: localhost:89038: No such file or directory
  • Vishy
    Vishy over 9 years
    @AdonSmith most likely there is no process id with that number. I suggest just running jps -lvm without the id.
  • Adon Smith
    Adon Smith over 9 years
    See i am running mac os, so may be your commands are not proper for that , can that be a reason ? because there is a processId , i found it by doing jps
  • Adon Smith
    Adon Smith over 9 years
    the output gave me this - -XX:InitialHeapSize=1073741824 -XX:MaxHeapSize=17179869184 -XX:+UseCompressedOops -XX:+UseParallelGC Is It in Bytes . If the max heap size is in 17 GB , how is it even possible , because before running my program , my JAVA_OPTS was set as export JAVA_OPTS='-Xms128m -Xmx1024m' , it should not be more than 1 GB
  • Adon Smith
    Adon Smith over 9 years
    it gives me error : attach: task_for_pid(18830) failed (5) Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process
  • Hunter Zhao
    Hunter Zhao over 9 years
    please use sudo jmap -heap {pid} @Adon Smith
  • apangin
    apangin over 9 years
    @AdonSmith JVM itself does not recoginze JAVA_OPTS. Try _JAVA_OPTIONS instead.