jstack/jmap java 1.8 中的备选方案
jstack/jmap alternative in java 1.8
随着 1.8 版本的发布,jstack 和 jmap(可能还有其他)已从 一些 java 发行版中删除(即 windows 发行版仍然有它们,但它们不存在于 linux 发行版中)。
Oracle 表示它们是实验性的,因此可以随时删除它们。
但是,我发现这些小工具在过去对调试非常有用。例如,我经常使用 jstack 打印特定 java 进程中的线程列表,等等
问题:您是否知道它们的任何替代品,或者 Oracle 是否简单地删除了它们而不提供任何替代品?
编辑 1
显然,这发生在 "server JRE" 版本中(如这个 http://download.oracle.com/otn/java/jdk/8u51-b16/server-jre-8u51-linux-x64.tar.gz),但不会出现在 JDK 版本中。
这与 java 1.7 不同,其中服务器 JRE 还包含这些文件。
虽然这背后的推理现在更有意义了,但我仍然想知道服务器 JRE 中是否有类似 jmap/jstack 的替代工具(安装 jdk 似乎有点麻烦服务器,只是为了查看一些线程信息)
我不确定您是从哪里获得有关它们已从 linux 发行版中删除的信息。我安装的最新的JDK_1.8.0_60还有。
如果它消失了,jconsole 会获取堆栈跟踪以及更多信息。
我从 Oracle 的网站上获得了标准下载:
shackle@shackle-desktop:~/NetBeansProjects/CppApplication_2$ /usr/local/jdk1.8.0_60/bin/java -XshowSettings:properties -version
Property settings:
awt.toolkit = sun.awt.X11.XToolkit
file.encoding = UTF-8
file.encoding.pkg = sun.io
file.separator = /
java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment
java.awt.printerjob = sun.print.PSPrinterJob
java.class.path = .
java.class.version = 52.0
java.endorsed.dirs = /usr/local/jdk1.8.0_60/jre/lib/endorsed
java.ext.dirs = /usr/local/jdk1.8.0_60/jre/lib/ext
/usr/java/packages/lib/ext
java.home = /usr/local/jdk1.8.0_60/jre
java.io.tmpdir = /tmp
java.library.path = /usr/local/jdk1.8.0_60/jre/lib/i386/server
/usr/local/jdk1.8.0_60/jre/lib/i386
/usr/local/jdk1.8.0_60/jre/../lib/i386
/home/shackle/rcslib//lib/
/usr/local/jdk1.8.0_25/jre/lib/i386/client/
.
/usr/local/lib
/local/lib/
/usr/java/packages/lib/i386
/lib
/usr/lib
java.runtime.name = Java(TM) SE Runtime Environment
java.runtime.version = 1.8.0_60-b27
java.specification.name = Java Platform API Specification
java.specification.vendor = Oracle Corporation
java.specification.version = 1.8
java.vendor = Oracle Corporation
java.vendor.url = http://java.oracle.com/
java.vendor.url.bug = http://bugreport.sun.com/bugreport/
java.version = 1.8.0_60
java.vm.info = mixed mode
java.vm.name = Java HotSpot(TM) Server VM
java.vm.specification.name = Java Virtual Machine Specification
java.vm.specification.vendor = Oracle Corporation
java.vm.specification.version = 1.8
java.vm.vendor = Oracle Corporation
java.vm.version = 25.60-b23
line.separator = \n
os.arch = i386
os.name = Linux
os.version = 3.2.0-32-generic
path.separator = :
sun.arch.data.model = 32
sun.boot.class.path = /usr/local/jdk1.8.0_60/jre/lib/resources.jar
/usr/local/jdk1.8.0_60/jre/lib/rt.jar
/usr/local/jdk1.8.0_60/jre/lib/sunrsasign.jar
/usr/local/jdk1.8.0_60/jre/lib/jsse.jar
/usr/local/jdk1.8.0_60/jre/lib/jce.jar
/usr/local/jdk1.8.0_60/jre/lib/charsets.jar
/usr/local/jdk1.8.0_60/jre/lib/jfr.jar
/usr/local/jdk1.8.0_60/jre/classes
sun.boot.library.path = /usr/local/jdk1.8.0_60/jre/lib/i386
sun.cpu.endian = little
sun.cpu.isalist =
sun.desktop = gnome
sun.io.unicode.encoding = UnicodeLittle
sun.java.launcher = SUN_STANDARD
sun.jnu.encoding = UTF-8
sun.management.compiler = HotSpot Tiered Compilers
sun.os.patch.level = unknown
user.country = US
user.dir = /home/shackle/NetBeansProjects/CppApplication_2
user.home = /home/shackle
user.language = en
user.name = shackle
user.timezone =
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) Server VM (build 25.60-b23, mixed mode)
shackle@shackle-desktop:~/NetBeansProjects/CppApplication_2$
随着 1.8 版本的发布,jstack 和 jmap(可能还有其他)已从 一些 java 发行版中删除(即 windows 发行版仍然有它们,但它们不存在于 linux 发行版中)。
Oracle 表示它们是实验性的,因此可以随时删除它们。 但是,我发现这些小工具在过去对调试非常有用。例如,我经常使用 jstack 打印特定 java 进程中的线程列表,等等
问题:您是否知道它们的任何替代品,或者 Oracle 是否简单地删除了它们而不提供任何替代品?
编辑 1
显然,这发生在 "server JRE" 版本中(如这个 http://download.oracle.com/otn/java/jdk/8u51-b16/server-jre-8u51-linux-x64.tar.gz),但不会出现在 JDK 版本中。 这与 java 1.7 不同,其中服务器 JRE 还包含这些文件。
虽然这背后的推理现在更有意义了,但我仍然想知道服务器 JRE 中是否有类似 jmap/jstack 的替代工具(安装 jdk 似乎有点麻烦服务器,只是为了查看一些线程信息)
我不确定您是从哪里获得有关它们已从 linux 发行版中删除的信息。我安装的最新的JDK_1.8.0_60还有。
如果它消失了,jconsole 会获取堆栈跟踪以及更多信息。
我从 Oracle 的网站上获得了标准下载:
shackle@shackle-desktop:~/NetBeansProjects/CppApplication_2$ /usr/local/jdk1.8.0_60/bin/java -XshowSettings:properties -version
Property settings:
awt.toolkit = sun.awt.X11.XToolkit
file.encoding = UTF-8
file.encoding.pkg = sun.io
file.separator = /
java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment
java.awt.printerjob = sun.print.PSPrinterJob
java.class.path = .
java.class.version = 52.0
java.endorsed.dirs = /usr/local/jdk1.8.0_60/jre/lib/endorsed
java.ext.dirs = /usr/local/jdk1.8.0_60/jre/lib/ext
/usr/java/packages/lib/ext
java.home = /usr/local/jdk1.8.0_60/jre
java.io.tmpdir = /tmp
java.library.path = /usr/local/jdk1.8.0_60/jre/lib/i386/server
/usr/local/jdk1.8.0_60/jre/lib/i386
/usr/local/jdk1.8.0_60/jre/../lib/i386
/home/shackle/rcslib//lib/
/usr/local/jdk1.8.0_25/jre/lib/i386/client/
.
/usr/local/lib
/local/lib/
/usr/java/packages/lib/i386
/lib
/usr/lib
java.runtime.name = Java(TM) SE Runtime Environment
java.runtime.version = 1.8.0_60-b27
java.specification.name = Java Platform API Specification
java.specification.vendor = Oracle Corporation
java.specification.version = 1.8
java.vendor = Oracle Corporation
java.vendor.url = http://java.oracle.com/
java.vendor.url.bug = http://bugreport.sun.com/bugreport/
java.version = 1.8.0_60
java.vm.info = mixed mode
java.vm.name = Java HotSpot(TM) Server VM
java.vm.specification.name = Java Virtual Machine Specification
java.vm.specification.vendor = Oracle Corporation
java.vm.specification.version = 1.8
java.vm.vendor = Oracle Corporation
java.vm.version = 25.60-b23
line.separator = \n
os.arch = i386
os.name = Linux
os.version = 3.2.0-32-generic
path.separator = :
sun.arch.data.model = 32
sun.boot.class.path = /usr/local/jdk1.8.0_60/jre/lib/resources.jar
/usr/local/jdk1.8.0_60/jre/lib/rt.jar
/usr/local/jdk1.8.0_60/jre/lib/sunrsasign.jar
/usr/local/jdk1.8.0_60/jre/lib/jsse.jar
/usr/local/jdk1.8.0_60/jre/lib/jce.jar
/usr/local/jdk1.8.0_60/jre/lib/charsets.jar
/usr/local/jdk1.8.0_60/jre/lib/jfr.jar
/usr/local/jdk1.8.0_60/jre/classes
sun.boot.library.path = /usr/local/jdk1.8.0_60/jre/lib/i386
sun.cpu.endian = little
sun.cpu.isalist =
sun.desktop = gnome
sun.io.unicode.encoding = UnicodeLittle
sun.java.launcher = SUN_STANDARD
sun.jnu.encoding = UTF-8
sun.management.compiler = HotSpot Tiered Compilers
sun.os.patch.level = unknown
user.country = US
user.dir = /home/shackle/NetBeansProjects/CppApplication_2
user.home = /home/shackle
user.language = en
user.name = shackle
user.timezone =
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) Server VM (build 25.60-b23, mixed mode)
shackle@shackle-desktop:~/NetBeansProjects/CppApplication_2$