Extract information from a java process that is running

Sometimes you need to obtain information regarding a JAVA process and the different options used to run this process such as the encoding, the timezone, the classpath, etc.

Luckily there a tool bundled with the JDK that allows you to do so, you just need to provide it the PID of the concerned process; this can be done in different ways, personally I prefer to use another tool bundled with the JDK JPS however this might not work (in windows) for wrapped java applications such as tomcat service, so you can do it with the task manager or another tool

Once you have the PID is pretty straight-forward in its most basic form just provide the PID to the command line tool like so :

jinfo 6544

You should get some output similar to this :

Attaching to process ID 6544, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.20-b23
Java System Properties:

java.vendor = Oracle Corporation
catalina.base = C:\dev\servers\tomcat8
sun.management.compiler = HotSpot 64-Bit Tiered Compilers
catalina.useNaming = true
os.name = Windows Server 2012
sun.boot.class.path = C:\Program Files\Java\jre1.8.0_20\lib\resources.jar;C:\Pro
gram Files\Java\jre1.8.0_20\lib\rt.jar;C:\Program Files\Java\jre1.8.0_20\lib\sun
rsasign.jar;C:\Program Files\Java\jre1.8.0_20\lib\jsse.jar;C:\Program Files\Java
\jre1.8.0_20\lib\jce.jar;C:\Program Files\Java\jre1.8.0_20\lib\charsets.jar;C:\P
rogram Files\Java\jre1.8.0_20\lib\jfr.jar;C:\Program Files\Java\jre1.8.0_20\clas
ses
java.util.logging.config.file = C:\dev\servers\tomcat8\c
onf\logging.properties
user.country.format = CH
sun.desktop = windows
java.vm.specification.vendor = Oracle Corporation
java.runtime.version = 1.8.0_20-b26
user.name = GERAS$
tomcat.util.scan.StandardJarScanFilter.jarsToScan = log4j-core*.jar,log4j-taglib
*.jar
shared.loader =
user.language.format = de
tomcat.util.buf.StringCache.byte.enabled = true
user.language = en
java.naming.factory.initial = org.apache.naming.java.javaURLContextFactory
sun.boot.library.path = C:\Program Files\Java\jre1.8.0_20\bin
PID = 6544
java.version = 1.8.0_20
java.util.logging.manager = org.apache.juli.ClassLoaderLogManager
user.timezone = Europe/Berlin
sun.arch.data.model = 64
java.endorsed.dirs = C:\dev\servers\tomcat8\endorsed
sun.cpu.isalist = amd64
sun.jnu.encoding = Cp1252
file.encoding.pkg = sun.io
package.access = sun.,org.apache.catalina.,org.apache.coyote.,org.apache.jasper.
,org.apache.tomcat.
file.separator = \
java.specification.name = Java Platform API Specification
java.class.version = 52.0
user.country = US
java.home = C:\Program Files\Java\jre1.8.0_20
java.vm.info = mixed mode
os.version = 6.2
path.separator = ;
java.vm.version = 25.20-b23
org.jboss.logging.provider = slf4j
user.variant =
jboss.i18n.generate-proxies = true
java.awt.printerjob = sun.awt.windows.WPrinterJob
sun.io.unicode.encoding = UnicodeLittle
awt.toolkit = sun.awt.windows.WToolkit
package.definition = sun.,java.,org.apache.catalina.,org.apache.coyote.,org.apac
he.jasper.,org.apache.naming.,org.apache.tomcat.
user.script =
java.naming.factory.url.pkgs = org.apache.naming
user.home = C:\Windows\system32\config\systemprofile
java.specification.vendor = Oracle Corporation
tomcat.util.scan.StandardJarScanFilter.jarsToSkip = bootstrap.jar,commons-daemon
.jar,tomcat-juli.jar,annotations-api.jar,el-api.jar,jsp-api.jar,servlet-api.jar,
websocket-api.jar,catalina.jar,catalina-ant.jar,catalina-ha.jar,catalina-storeco
nfig.jar,catalina-tribes.jar,jasper.jar,jasper-el.jar,ecj-*.jar,tomcat-api.jar,t
omcat-util.jar,tomcat-util-scan.jar,tomcat-coyote.jar,tomcat-dbcp.jar,tomcat-jni
.jar,tomcat-spdy.jar,tomcat-websocket.jar,tomcat-i18n-en.jar,tomcat-i18n-es.jar,
tomcat-i18n-fr.jar,tomcat-i18n-ja.jar,tomcat-juli-adapters.jar,catalina-jmx-remo
te.jar,catalina-ws.jar,tomcat-jdbc.jar,tools.jar,commons-beanutils*.jar,commons-
codec*.jar,commons-collections*.jar,commons-dbcp*.jar,commons-digester*.jar,comm
ons-fileupload*.jar,commons-httpclient*.jar,commons-io*.jar,commons-lang*.jar,co
mmons-logging*.jar,commons-math*.jar,commons-pool*.jar,jstl.jar,geronimo-spec-ja
xrpc*.jar,wsdl4j*.jar,ant.jar,ant-junit*.jar,aspectj*.jar,jmx.jar,h2*.jar,hibern
ate*.jar,httpclient*.jar,jmx-tools.jar,jta*.jar,log4j*.jar,mail*.jar,slf4j*.jar,
xercesImpl.jar,xmlParserAPIs.jar,xml-apis.jar,junit.jar,junit-*.jar,ant-launcher
.jar,cobertura-*.jar,asm-*.jar,dom4j-*.jar,icu4j-*.jar,jaxen-*.jar,jdom-*.jar,je
tty-*.jar,oro-*.jar,servlet-api-*.jar,tagsoup-*.jar,xmlParserAPIs-*.jar,xom-*.ja
r
java.library.path = C:\dev\servers\tomcat8\bin;C:\Window
s\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\ProgramData\Oracle\Java\javapat
h;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\Wi
ndowsPowerShell\v1.0\;C:\Program Files\Microsoft SQL Server\110\DTS\Binn\;C:\Pro
gram Files (x86)\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files\Microsoft
 SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\110\Tool
s\Binn\ManagementStudio\;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Com
mon7\IDE\PrivateAssemblies\;C:\Program Files (x86)\Microsoft SQL Server\110\DTS\
Binn\;;.
java.vendor.url = http://java.oracle.com/
java.vm.vendor = Oracle Corporation
common.loader = "${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.
home}/lib","${catalina.home}/lib/*.jar"
java.runtime.name = Java(TM) SE Runtime Environment
java.class.path = C:\dev\servers\tomcat8\bin\bootstrap.j
ar;C:\dev\servers\tomcat8\bin\tomcat-juli.jar
java.vm.specification.name = Java Virtual Machine Specification
java.vm.specification.version = 1.8
catalina.home = C:\dev\servers\tomcat8
sun.cpu.endian = little
sun.os.patch.level =
java.awt.headless = true
java.io.tmpdir = C:\dev\servers\tomcat8\temp
java.vendor.url.bug = http://bugreport.sun.com/bugreport/
server.loader =
os.arch = amd64
java.awt.graphicsenv = sun.awt.Win32GraphicsEnvironment
java.ext.dirs = C:\Program Files\Java\jre1.8.0_20\lib\ext;C:\Windows\Sun\Java\li
b\ext
user.dir = C:\dev\servers\tomcat8
line.separator =

java.vm.name = Java HotSpot(TM) 64-Bit Server VM
file.encoding = UTF-8
java.specification.version = 1.8

VM Flags:
Non-default VM flags: -XX:CICompilerCount=3 -XX:InitialHeapSize=4294967296 -XX:M
axHeapSize=4294967296 -XX:MaxNewSize=1431306240 -XX:MinHeapDeltaBytes=524288 -XX
:NewSize=1431306240 -XX:OldSize=2863661056 -XX:+UseCompressedClassPointers -XX:+
UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
Command line:  -Dcatalina.home=C:\dev\servers\tomcat8 -D
catalina.base=C:\dev\servers\tomcat8 -Djava.endorsed.dir
s=C:\dev\servers\tomcat8\endorsed -Djava.io.tmpdir=C:\Pr
ojects\Geras\Tomcat 8.0_Tomcat8_Geras_UAT\temp -Dfile.encoding=UTF-8 -Djava.util
.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.confi
g.file=C:\dev\servers\tomcat8\conf\logging.properties ex
it -Xms4096m -Xmx4096m
Please note that these tools can be found in the BIN folder of your JDK so if you don't have that folder in your path you will need to either add it or run it from this folder in order for this to work

Edit tomcat service start-up options

There is an easy way to change a Tomcat configured as a service start-up options and configurations such as :

  • Memory options (xmx, xms, etc.)
  • Logging configuration
  • Miscellaneous Java configuration

This can be done through the tomcat binary.

1.-Head up to your tomcat's binary folder
    cd C:\dev\servers\tomcat8\bin>
2.- Launch the "Apache tomcat properties" window
tomcat8w.exe //ES//MyServiceName

Where MyServiceName is the name of the service you configured when installing tomcat as a service. This should open the following popup window :

3.- Edit your required properties

Edit the properties; save the configuration and start/restart the service and you are done

OSX show used ports or listening applications with their PID

On OSX you can display applications listening on a given port using the lsof the commands described below will show listening application...