java - español - increase memory weblogic 12c
Obteniendo los parámetros de una JVM en ejecución (8)
Alternativamente, puedes usar jinfo
jinfo -flags <vmid>
jinfo -sysprops <vmid>
¿Hay alguna manera de obtener los parámetros de una JVM en ejecución? ¿Existe una herramienta de línea de comandos como jstat que toma como entrada el pid de la JVM y devuelve sus parámetros iniciales? Estoy particularmente interesado en los valores de -Xmx y -Xms que se dieron al iniciar la JVM. Gracias.
Edición : Para aclarar mis limitaciones. La JVM que nos gustaría verificar se está ejecutando en un servidor de producción. Por eso, preferimos la mínima interrupción. Podemos monitorear la JVM utilizando jstat, por lo que esperamos que haya una solución simple similar para acceder a los parámetros.
Edición : También intentamos obtener los parámetros utilizando jvisualvm. Pero para conectarnos a un jvm remoto, debemos ejecutar jstatd y modificar la configuración de seguridad del JVM, que consideramos muy perjudicial y arriesgado en un servidor de producción.
En Linux:
java -XX:+PrintFlagsFinal -version | grep -iE ''HeapSize|PermSize|ThreadStackSize''
En Mac OSX:
java -XX:+PrintFlagsFinal -version | grep -iE ''heapsize|permsize|threadstacksize''
En Windows:
C:/>java -XX:+PrintFlagsFinal -version | findstr /i "HeapSize PermSize ThreadStackSize"
Fuente: https://www.mkyong.com/java/find-out-your-java-heap-memory-size/
Esta técnica se aplica a cualquier aplicación java que se ejecute de forma local o remota.
- Inicie su aplicación java.
- Ejecute JVisualVM encontrado en usted JDK (como C: / Archivos de programa / Java / jdk1.8.0_05 / bin / jvisualvm.exe).
- Cuando esta herramienta útil comience, mire la lista de aplicaciones java en ejecución en el nodo de árbol "Local".
- Haga doble clic en [su aplicación] (pid [n]).
- En el lado derecho habrá contenidos de inspección en la pestaña de la aplicación. En el centro de la pestaña Visión general verá los argumentos JVM para la aplicación.
Puede encontrar jvisualvm en cualquier JDK desde la actualización 7 de JDK 6. Aquí está el video tutorial sobre jvisualvm here.
Esto se puede hacer con jcmd también
jcmd pid VM.system_properties
jcmd pid VM.flags
Estoy agregando esta nueva respuesta porque, según la documentación de JDK8, se sugiere el enfoque jcmd ahora.
Se sugiere utilizar la última utilidad, jcmd en lugar de las utilidades jstack, jinfo y jmap anteriores para mejorar los diagnósticos y reducir la sobrecarga de rendimiento.
jcmd pid VM.system_properties
11441:
#Tue Oct 17 12:44:50 IST 2017
gopherProxySet=false
awt.toolkit=sun.lwawt.macosx.LWCToolkit
file.encoding.pkg=sun.io
java.specification.version=9
sun.cpu.isalist=
sun.jnu.encoding=UTF-8
java.class.path=.
java.vm.vendor=Oracle Corporation
sun.arch.data.model=64
java.vendor.url=http/://java.oracle.com/
user.timezone=Asia/Kolkata
java.vm.specification.version=9
os.name=Mac OS X
sun.java.launcher=SUN_STANDARD
user.country=US
sun.boot.library.path=/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/lib
sun.java.command=Test
http.nonProxyHosts=local|*.local|169.254/16|*.169.254/16
jdk.debug=release
sun.cpu.endian=little
user.home=/Users/XXXX
user.language=en
java.specification.vendor=Oracle Corporation
java.home=/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home
file.separator=/
java.vm.compressedOopsMode=Zero based
line.separator=/n
java.specification.name=Java Platform API Specification
java.vm.specification.vendor=Oracle Corporation
java.awt.graphicsenv=sun.awt.CGraphicsEnvironment
sun.management.compiler=HotSpot 64-Bit Tiered Compilers
ftp.nonProxyHosts=local|*.local|169.254/16|*.169.254/16
java.runtime.version=9+181
user.name=XXXX
path.separator=/:
os.version=10.12.6
java.runtime.name=Java(TM) SE Runtime Environment
file.encoding=UTF-8
java.vm.name=Java HotSpot(TM) 64-Bit Server VM
java.vendor.url.bug=http/://bugreport.java.com/bugreport/
java.io.tmpdir=/var/folders/dm/gd6lc90d0hg220lzw_m7krr00000gn/T/
java.version=9
user.dir=/Users/XXXX/javacode
os.arch=x86_64
java.vm.specification.name=Java Virtual Machine Specification
java.awt.printerjob=sun.lwawt.macosx.CPrinterJob
sun.os.patch.level=unknown
MyParam=2
java.library.path=/Users/XXXX/Library/Java/Extensions/:/Library/Java/Extensions/:/Network/Library/Java/Extensions/:/System/Library/Java/Extensions/:/usr/lib/java/:.
java.vm.info=mixed mode
java.vendor=Oracle Corporation
java.vm.version=9+181
sun.io.unicode.encoding=UnicodeBig
java.class.version=53.0
socksNonProxyHosts=local|*.local|169.254/16|*.169.254/16
Salida jcmd 11441 VM.flags:
11441:
-XX:CICompilerCount=3 -XX:ConcGCThreads=1 -XX:G1ConcRefinementThreads=4 -XX:G1HeapRegionSize=1048576 -XX:InitialHeapSize=67108864 -XX:MarkStackSize=4194304 -XX:MaxHeapSize=1073741824 -XX:MaxNewSize=643825664 -XX:MinHeapDeltaBytes=1048576 -XX:NonNMethodCodeHeapSize=5830092 -XX:NonProfiledCodeHeapSize=122914074 -XX:ProfiledCodeHeapSize=122914074 -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:-UseAOT -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseG1GC
JConsole puede hacerlo. También puede usar una poderosa herramienta jvisualVM, que también se incluye en JDK desde 1.6.0.8.
Puede usar el comando JConsole (o cualquier otro cliente JMX) para acceder a esa información.
Puedes usar jps como
jps -lvm
imprime algo como
4050 com.intellij.idea.Main -Xms128m -Xmx512m -XX:MaxPermSize=250m -ea -Xbootclasspath/a:../lib/boot.jar -Djb.restart.code=88
4667 sun.tools.jps.Jps -lvm -Dapplication.home=/opt/java/jdk1.6.0_22 -Xms8m
Si puedes hacer esto en java, prueba:
Ejemplo:
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
List<String> jvmArgs = runtimeMXBean.getInputArguments();
for (String arg : jvmArgs) {
System.out.println(arg);
}