2015-01-15 5 views
4

У меня есть Java-программа, которую я запускал и вычислял ее идентификатор процесса с помощью jps.Команда для определения значений -Xms и -Xmx для данного java-процесса?

Как я могу узнать, что такое переменная -Xms и -Xmx для этого java-процесса?

+0

От вас ответить на ответ SQL.injection, это кажется, что у вас есть другой 'jps' на вашем Mac, чем я. Можете ли вы добавить следующую информацию к своему вопросу: (1) Какая версия MacOS X. (2) Какая версия java. (3) Результаты запуска 'which jps'. (4) Результаты запуска 'file $ (which jps)'. – RealSkeptic

+0

ответы на вопросы: - 1), которые jps -/usr/bin/jps 2) whic java version - версия java «1.7.0_55», 3), который MacOSX - 10.7.5 4) file $ (который jps) ->/usr/bin/jps: универсальный двоичный файл Mach-O с двумя архитектурами /usr/bin/jps (для архитектуры x86_64): \t 64-разрядный исполняемый файл Mach-O x86_64 /usr/bin/jps (для архитектуры i386): \t Mach-O executable i386 –

ответ

4

Попробуйте

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

, результат дал мне это: -XX: InitialHeapSize = 1073741824 -XX: MaxHeapSize = 17179869184 -XX: + UseCompressedOops -XX: + UseParallelGC Is It in Bytes. максимальный размер кучи в 17 ГБ, как это возможно, потому что перед запуском моей программы мой JAVA_OPTS был установлен как экспорт JAVA_OPTS = '- Xms128m -Xmx1024m', он должен быть не более 1 ГБ –

+0

@AdonSmith JVM сам не ре coginze 'JAVA_OPTS'. Вместо этого попробуйте '_JAVA_OPTIONS'. – apangin

2

вы можете использовать JPS и сделать это из командной строки:

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

, если это не достаточно, то вы можете сделать это программно внутри программы для проверки maximum amount of memory that the Java virtual machine will attempt to use:

Runtime.getRuntime().maxMemory() 

и вы также может использовать класс MemoryUsage для получения начального, использованного и максимального количества, которое может использоваться для управления памятью.

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

Я нахожусь на Mac OS 10.10 - когда я набрал команду jps -v , он не прошел grep: 89038: Нет такого файла или каталога –

+1

Я не хочу делать это программно. Нужна только команда :( –

+0

@AdonSmith вам нужно указать хост. См. Снова мой awnser –

1

Я думаю jmap команда даст вам все, что вы хотите.
использование: jmap -heap {PID}

[email protected]:/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. 
+0

это дает мне ошибку: attach: task_for_pid (18830) failed (5) Ошибка при подключении к процессу: sun.jvm.hotspot.debugger.DebuggerException: Не удается подключиться к процессу –

+0

, пожалуйста, используйте 'sudo jmap -heap {pid} '@Adon Smith –

Смежные вопросы