JDK自带JVM分析工具详解
1. JVM分析工具概述
1.1 JVM分析工具简介
在日常应用开发过程中对JVM状态指标等健康状况的分析是必不可少的操作,尤其是在出现一些内存,GC,线程等问题,JVM分析工具能够很好的帮助我们定位分析问题,我们可以利用jdk自带的jvm分析工具进行分析,比如jps,jinfo,jvisualvm,jconsole,jstat,jstack,jcmd,jmap等。当然也可以采用很多优秀的开源jvm分析工具进行分析,Arthas等。
1.2 JVM分析工具分类
1.jdk自带工具路径:%JAVA_HOME%\jdk1.8.0_151\bin
2.常见jdk自带jvm分析工具
工具 | 类型 | 作用 |
---|---|---|
jps | 命令行 | jvm进程状态工具,列出系统上jvm进程的pid |
jinfo | 命令行 | jvm信息查看工具,查看jvm的各种配置信息 |
jvisualvm | 图形界面 | jvm综合监控工具,查看jvm基本信息,堆,栈,转储,内存,cpu以及gc等信息 |
jconsole | 图形界面 | jmx兼容的图形工具,用于监控jvm基本情况,查看MBean |
jstat | 命令行 | jvm统计监控工具,附件到一个jvm进程上手机和记录jvm的各种性能指标数据 |
jstack | 命令行 | jvm栈查看工具,可以查看jvm进程的线程和锁信息 |
jcmd | 命令行 | jvm命令行调试工具,用于向jvm进程发送调试命令 |
jmap | 命令行 | jvm堆内存分析工具,可以查看jvm进程对象直方图,类加载统计以及做堆转储操作 |
2. JVM分析工具详解
2.1 idea环境配置
启动10个死循环的线程,每个线程分配一个10MB左右的字符串,然后休眠10秒。
public class JvmUtilTest {
/**
* JVM测试
* 启动10个死循环的线程,每个线程分配一个10MB左右的字符串,然后休眠10秒。
*/
@Test
public void threadSleep() throws InterruptedException {
System.out.println("线程启动,执行开始:" + DateUtil.date());
//启动10个线程
IntStream.rangeClosed(1, 10).mapToObj(i -> new Thread(() -> {
while (true) {
//每一个线程都是一个死循环,休眠10秒,打印10M数据
String payload = IntStream.rangeClosed(1, 10000000)
.mapToObj(__ -> "a")
.collect(Collectors.joining("")) + UUID.randomUUID().toString();
try {
TimeUnit.SECONDS.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("第" + i + "线程分配字符串长度:" + payload.length());
}
})).forEach(Thread::start);
//主程序休眠1小时,用来测试
TimeUnit.HOURS.sleep(1);
System.out.println("线程结束,执行完成:" + DateUtil.date());
}
}
idea配置:Edit Configurations->VM Options
-ea -Xms1g -Xmx1g -XX:ThreadStackSize=256k -XX:NativeMemoryTracking=detail
设置堆内存大小:-Xms1g -Xmx1g
开启JVM NMT: -XX:ThreadStackSize=256k -XX:NativeMemoryTracking=detail
2.2 jps
通过jps查看Java进程列表PID。可以看到JUnitStarter对应pid为21984
D:\software\Java\jdk1.8.0_151\bin>jps
21984 JUnitStarter
20724 Launcher
6148 Jps
8884 KotlinCompileDaemon
18700
2.3 jinfo
通过Java进程对应的pid,使用jinfo查看jvm各种配置信息。比如jdk版本,环境,路径,虚拟机名称,编码,堆栈等信息。VM Flags对应堆栈信息,-XX:InitialHeapSize=1073741824 -XX:MaxHeapSize=1073741824,初始化最大堆内存,刚好与前面设置的堆内存大小相符合1g。
D:\software\Java\jdk1.8.0_151\bin>jinfo 21984
Attaching to process ID 21984, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.151-b12
Java System Properties:
java.runtime.name = Java(TM) SE Runtime Environment
java.vm.version = 25.151-b12
sun.boot.library.path = D:\software\Java\jdk1.8.0_151\jre\bin
java.vendor.url = http://java.oracle.com/
java.vm.vendor = Oracle Corporation
path.separator = ;
file.encoding.pkg = sun.io
java.vm.name = Java HotSpot(TM) 64-Bit Server VM
sun.os.patch.level =
sun.java.launcher = SUN_STANDARD
user.script =
user.country = CN
user.dir = D:\work\opencode\auto-market
java.vm.specification.name = Java Virtual Machine Specification
java.runtime.version = 1.8.0_151-b12
java.awt.graphicsenv = sun.awt.Win32GraphicsEnvironment
os.arch = amd64
java.endorsed.dirs = D:\software\Java\jdk1.8.0_151\jre\lib\endorsed
line.separator =
java.io.tmpdir = C:\Users\1\AppData\Local\Temp\
java.vm.specification.vendor = Oracle Corporation
user.variant =
os.name = Windows 10
sun.jnu.encoding = GBK
java.library.path = D:\software\Java\jdk1.8.0_151\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;"D:\software\Java\jdk1.8.0_151\bin;D:\software\Java\jdk1.8.0_151\jre\bin";D:\software\Git\cmd;D:\software\maven\apache-maven-3.6.1\bin;D:\tools\jmeter\apache-jmeter-5.4.1\lib\ext\ApacheJMeter_core.jar;D:\tools\jmeter\apache-jmeter-5.4.1\lib\jorphan.jar;D:\software\Graphviz2.38\bin;D:\software\nodejs\;D:\software\nodejs;C:\Users\1\AppData\Local\Microsoft\WindowsApps;;D:\software\Microsoft VS Code\bin;C:\Users\1\AppData\Roaming\npm;.
jboss.modules.system.pkgs = com.intellij.rt
java.specification.name = Java Platform API Specification
java.class.version = 52.0
sun.management.compiler = HotSpot 64-Bit Tiered Compilers
os.version = 10.0
user.home = C:\Users\1
user.timezone = Asia/Shanghai
java.awt.printerjob = sun.awt.windows.WPrinterJob
file.encoding = UTF-8
java.specification.version = 1.8
user.name = 1
java.class.path = D:\software\IntelliJ IDEA 2018.1.6\lib\idea_rt.jar;D:\software\Java\jdk1.8.0_151\jre\lib\jfr.jar;D:\software\Java\jdk1.8.0_151\jre\lib\jfxswt.jar;D:\software\maven\.m2\repository\org\springframework\spring-core\5.3.16\spring-core-5.3.16.jar;
java.vm.specification.version = 1.8
sun.arch.data.model = 64
sun.java.command = com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 -junit4 com.jerry.market.utils.JvmUtilTest,threadSleep
java.home = D:\software\Java\jdk1.8.0_151\jre
user.language = zh
java.specification.vendor = Oracle Corporation
awt.toolkit = sun.awt.windows.WToolkit
java.vm.info = mixed mode
java.version = 1.8.0_151
java.ext.dirs = D:\software\Java\jdk1.8.0_151\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\ext
sun.boot.class.path = D:\software\Java\jdk1.8.0_151\jre\lib\resources.jar;D:\software\Java\jdk1.8.0_151\jre\lib\rt.jar;D:\software\Java\jdk1.8.0_151\jre\lib\sunrsasign.jar;D:\software\Java\jdk1.8.0_151\jre\lib\jsse.jar;D:\software\Java\jdk1.8.0_151\jre\lib\jce.jar;D:\software\Java\jdk1.8.0_151\jre\lib\charsets.jar;D:\software\Java\jdk1.8.0_151\jre\lib\jfr.jar;D:\software\Java\jdk1.8.0_151\jre\classes;C:\Users\1\.IntelliJIdea2018.1\system\captureAgent\debugger-agent-storage.jar
java.vendor = Oracle Corporation
file.separator = \
java.vendor.url.bug = http://bugreport.sun.com/bugreport/
idea.test.cyclic.buffer.size = 1048576
sun.io.unicode.encoding = UnicodeLittle
sun.cpu.endian = little
sun.desktop = windows
sun.cpu.isalist = amd64
VM Flags:
Non-default VM flags: -XX:CICompilerCount=4 -XX:InitialHeapSize=1073741824 -XX:MaxHeapSize=1073741824 -XX:MaxNewSize=357564416 -XX:MinHeapDeltaBytes=524288 -XX:NativeMemoryTracking=null -XX:NewSize=357564416 -XX:OldSize=716177408 -XX:ThreadStackSize=262144 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
Command line: -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:62405,suspend=y,server=n -ea -Xms1g -Xmx1g -XX:ThreadStackSize=256k -XX:NativeMemoryTracking=detail -Didea.test.cyclic.buffer.size=1048576 -javaagent:C:\Users\1\.IntelliJIdea2018.1\system\captureAgent\debugger-agent.jar=file:/C:/Users/1/AppData/Local/Temp/capture9146.props -Dfile.encoding=UTF-8
2.4 jvisualvm
jvisualvm是一个综合监控工具,查看jvm基本信息,堆,栈,转储,内存,cpu以及gc等信息。
打开图形化界面,找到对应执行方法程序可以查看相关资源配置信息。
概述:Java进程PID,主机IP,主类,参数,jvm名称,版本,以及jvm参数与系统属性。
监视:CPU(使用情况,垃圾回收情况),内存(堆大小,堆使用大小),类(类装入卸载数量),线程(活动线程,守护线程数量)
线程:当前所有线程执行状态,主要包括开启了那些线程,线程运行,休眠,等待,驻留,监视等信息。
抽样器:CPU抽样(CPU样例与线程CPU时间)与内存抽样(堆柱状图与每个线程分配),
Profiler:CPU与内存性能分析。
Visual GC:Spaces与Graphs,Spaces主要包括Metaspace,Old,Eden,S0,S1,Graphs实时分析。需要注意是这个需要以插件的形式安装,工具-插件-可用插件-选择VisualGC安装即可。
visualvm官网地址:https://visualvm.github.io/
xisualvm文档地址:https://visualvm.github.io/documentation.html
visualvm插件下载地址:https://visualvm.github.io/pluginscenters.html
D:\software\Java\jdk1.8.0_151\bin>jvisualvm
D:\software\Java\jdk1.8.0_151\bin>
The launcher has determined that the parent process has a console and will reuse it for its own console output.
Closing the console will result in termination of the running program.
Use '--console suppress' to suppress console output.
Use '--console new' to create a separate console window.
概述,可以看到堆栈信息以及系统参数等。
监视,可以看到jvmGC大概时间,每10秒回收一次与程序保持一致。我们可以在监视面板看到 JVM 的基本情况,也可以直接在这里进行手动 GC 和堆 Dump 操作。
线程,可以看到我们开启的线程状态,刚好开启10个线程与程序一致。
抽样器,可以看到内存或者CPU抽样状态。
Profiler,内存或者CPU抽样性能分析。
Visual GC,垃圾收集器执行状态以及每个分区大小。
2.5 jconsole
jconsole如果希望看到各个内存区的 GC 曲线图,可以使用 jconsole 观察。jconsole 也是一个综合性图形界面监控工具,比 jvisualvm 更方便的一点是,可以用曲线的形式监控堆内存,线程,类,以及MBean 中的属性值。
打开jconsole,选择本地进程,测试程序JvmUtilTest
Microsoft Windows [版本 10.0.19044.1586]
(c) Microsoft Corporation。保留所有权利。
D:\software\Java\jdk1.8.0_151\bin>jconsole
2.6 jstat
jstat工具以命令行的方式,允许以固定的监控频次输出 JVM 的各种监控指标,比如使用 -gcutil 输出 GC 和内存占用汇总信息,每隔 5 秒输出一次,输出 100 次,可以看到 Young GC 比较频繁,而 Full GC 基本 10 秒一次。
jstat 命令的参数众多,包含 -class、-compiler、-gc 等。Java 8、Linux/Unix 平台 jstat 工具的完整介绍,你可以查看这里。jstat 定时输出的特性,可以方便我们持续观察程序的各项指标。
参数说明:S0 表示 Survivor0 区占用百分比,S1 表示 Survivor1 区占用百分比,E 表示 Eden 区占用百分比,O 表示老年代占用百分比,M 表示元数据区占用百分比,YGC 表示年轻代回收次数,YGCT 表示年轻代回收耗时,FGC 表示老年代回收次数,FGCT 表示老年代回收耗时。
D:\software\Java\jdk1.8.0_151\bin>jstat -gcutil 21984 5000 100
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 0.00 68.86 34.52 96.53 89.47 4968 87.791 674 17.954 105.745
0.00 82.22 51.10 50.63 96.53 89.47 4978 87.964 675 18.001 105.965
0.00 84.11 84.52 53.59 96.53 89.47 4984 88.080 676 18.031 106.110
0.00 74.37 0.00 54.93 96.53 89.47 4992 88.211 677 18.059 106.270
67.33 0.00 68.56 59.70 96.53 89.47 5001 88.380 678 18.088 106.468
0.00 82.24 50.94 52.23 96.53 89.47 5008 88.517 679 18.130 106.647
0.00 67.36 68.49 72.10 96.53 89.47 5018 88.681 680 18.164 106.845
0.00 84.11 0.00 48.74 96.53 89.47 5022 88.739 681 18.197 106.936
0.00 88.10 42.98 69.81 96.53 89.47 5032 88.908 682 18.226 107.134
84.16 0.00 52.01 37.07 96.53 89.47 5035 88.968 683 18.257 107.225
99.02 0.00 20.74 61.60 96.53 89.47 5045 89.150 684 18.286 107.437
67.33 0.00 68.32 43.56 96.53 89.47 5051 89.262 685 18.317 107.579
2.7 jstack
通过命令行工具 jstack,也可以实现抓取线程栈的操作。抓取后可以使用类似fastthread(https://fastthread.io/)这样的在线分析工具来分析线程栈。
D:\software\Java\jdk1.8.0_151\bin>jstack 21984
2022-03-22 14:41:27
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.151-b12 mixed mode):
"RMI TCP Connection(14)-10.11.18.236" #55 daemon prio=5 os_prio=0 tid=0x000000006960e000 nid=0x450c runnable [0x000000027fffd000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:171)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read(BufferedInputStream.java:265)
- locked <0x00000000c05caec8> (a java.io.BufferedInputStream)
at java.io.FilterInputStream.read(FilterInputStream.java:83)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:550)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$63/825324542.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
"JMX server connection timeout 28" #28 daemon prio=5 os_prio=0 tid=0x0000000068e70800 nid=0x698 in Object.wait() [0x000000020ffff000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at com.sun.jmx.remote.internal.ServerCommunicatorAdmin$Timeout.run(Redefined)
- locked <0x00000000c0190630> (a [I)
at java.lang.Thread.run(Thread.java:748)
"RMI Scheduler(0)" #27 daemon prio=5 os_prio=0 tid=0x0000000068e77000 nid=0x5a0c waiting on condition [0x00000001ffffe000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000c0191a48> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Redefined)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Redefined)
at java.lang.Thread.run(Thread.java:748)
"VM Thread" os_prio=2 tid=0x0000000015e9a000 nid=0x2e94 runnable
"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00000000030ac000 nid=0x45a4 runnable
"GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00000000030b1800 nid=0x4b98 runnable
"VM Periodic Task Thread" os_prio=2 tid=0x000000006828f800 nid=0x4aac waiting on condition
JNI global references: 6909
2.8 jcmd
jcmd命令行工具用来查看Java HotSpot 虚拟机的 NMT 功能。查看前提需要开启NMT功能。设置VMOptions:-XX:NativeMemoryTracking=summary/detail 可以开启 NMT 功能,开启后可以使用 jcmd 工具查看 NMT 数据。开启NMT功能,重新启动。
查看线程堆栈信息
D:\software\Java\jdk1.8.0_151\bin>jcmd 16252 VM.native_memory summary
D:\software\Java\jdk1.8.0_151\bin>jcmd 16252 VM.native_memory detail
D:\software\Java\jdk1.8.0_151\bin>jcmd 16252 VM.native_memory summary
16252:
Native Memory Tracking:
Total: reserved=7161154KB, committed=5865482KB
- Java Heap (reserved=1048576KB, committed=1048576KB)
(mmap: reserved=1048576KB, committed=1048576KB)
- Class (reserved=1066262KB, committed=17430KB)
(classes #1297)
(malloc=9494KB #1211)
(mmap: reserved=1056768KB, committed=7936KB)
- Thread (reserved=4734092KB, committed=4734092KB)
(thread #34)
(stack: reserved=4733952KB, committed=4733952KB)
(malloc=100KB #186)
(arena=40KB #67)
- Code (reserved=250005KB, committed=3265KB)
(malloc=405KB #1002)
(mmap: reserved=249600KB, committed=2860KB)
- GC (reserved=48848KB, committed=48748KB)
(malloc=10384KB #137)
(mmap: reserved=38464KB, committed=38364KB)
- Compiler (reserved=187KB, committed=187KB)
(malloc=56KB #111)
(arena=131KB #3)
- Internal (reserved=10085KB, committed=10085KB)
(malloc=10021KB #8197)
(mmap: reserved=64KB, committed=64KB)
- Symbol (reserved=2581KB, committed=2581KB)
(malloc=1518KB #3730)
(arena=1063KB #1)
- Native Memory Tracking (reserved=322KB, committed=322KB)
(malloc=74KB #1164)
(tracking overhead=248KB)
- Arena Chunk (reserved=196KB, committed=196KB)
(malloc=196KB)
D:\software\Java\jdk1.8.0_151\bin>jcmd 16252 VM.native_memory detail
16252:
Native Memory Tracking:
Total: reserved=7161155KB, committed=5865551KB
- Java Heap (reserved=1048576KB, committed=1048576KB)
(mmap: reserved=1048576KB, committed=1048576KB)
- Class (reserved=1066262KB, committed=17430KB)
(classes #1297)
(malloc=9494KB #1211)
(mmap: reserved=1056768KB, committed=7936KB)
- Thread (reserved=4734092KB, committed=4734092KB)
(thread #34)
(stack: reserved=4733952KB, committed=4733952KB)
(malloc=100KB #186)
(arena=40KB #67)
- Code (reserved=250006KB, committed=3334KB)
(malloc=406KB #1008)
(mmap: reserved=249600KB, committed=2928KB)
- GC (reserved=48848KB, committed=48748KB)
(malloc=10384KB #137)
(mmap: reserved=38464KB, committed=38364KB)
- Compiler (reserved=187KB, committed=187KB)
(malloc=56KB #111)
(arena=131KB #3)
- Internal (reserved=10085KB, committed=10085KB)
(malloc=10021KB #8197)
(mmap: reserved=64KB, committed=64KB)
- Symbol (reserved=2581KB, committed=2581KB)
(malloc=1518KB #3730)
(arena=1063KB #1)
- Native Memory Tracking (reserved=322KB, committed=322KB)
(malloc=74KB #1164)
(tracking overhead=248KB)
- Arena Chunk (reserved=196KB, committed=196KB)
(malloc=196KB)
Virtual memory map:
[0x0000000000b30000 - 0x0000000000b40000] reserved and committed 64KB for Internal from
[0x0000000072d480fe]
[0x0000000072d6e045]
[0x0000000072d6e154]
[0x0000000072cf1755]
[0x0000000000b40000 - 0x0000000000b60000] reserved 128KB for GC from
[0x0000000072cee317]
[0x0000000072d195c2]
[0x0000000072d19c3a]
[0x0000000072ecd8b6]
[0x0000000011f50000 - 0x0000000012160000] reserved 2112KB for GC from
[0x0000000072cee317]
[0x0000000072d195c2]
[0x0000000072d19c3a]
[0x0000000072ba2b9c]
[0x0000000012150000 - 0x0000000012151000] committed 4KB from
[0x0000000072cee6e1]
[0x0000000072ba2c12]
[0x0000000072ec3a0c]
[0x0000000072bc3106]
[0x0000000012160000 - 0x00000000122c0000] reserved 1408KB for GC from
[0x0000000072cee317]
[0x0000000072d195c2]
[0x0000000072d19bf0]
[0x0000000072ec2c61]
[0x00000000122c0000 - 0x00000000123c0000] reserved and committed 1024KB for Thread Stack from
[0x0000000072d0f2a8]
[0x0000000072ec28ef]
[0x0000000072d6c3ea]
[0x0000000073391d9f]
... ...
[0x0000000072d480fe]
[0x0000000072d6e045]
[0x0000000072d6e154]
[0x0000000072cf1755]
(reserved=64KB, committed=64KB)
2.9 jmap
jmap jvm自带命令行工具,可用于了解系统运行时的对象分布。
jmap pid 查看基本信息。
查看堆信息,jmap -heap pid。
jmap -histo pid 查看一些class的使用情况。
jmap -histo:live pid >dump.txt 输出class信息到dump文件。
D:\software\Java\jdk1.8.0_151\bin>jmap 16252
Attaching to process ID 16252, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.151-b12
0x0000000072990000 36K D:\software\Java\jdk1.8.0_151\jre\bin\dt_socket.dll
0x00000000729a0000 140K D:\software\Java\jdk1.8.0_151\jre\bin\instrument.dll
0x00000000729d0000 32K D:\software\Java\jdk1.8.0_151\jre\bin\npt.dll
0x00000000729e0000 212K D:\software\Java\jdk1.8.0_151\jre\bin\jdwp.dll
0x0000000072a30000 68K D:\software\Java\jdk1.8.0_151\jre\bin\nio.dll
0x0000000072a50000 104K D:\software\Java\jdk1.8.0_151\jre\bin\net.dll
0x0000000072a70000 88K D:\software\Java\jdk1.8.0_151\jre\bin\zip.dll
0x0000000072a90000 164K D:\software\Java\jdk1.8.0_151\jre\bin\java.dll
0x0000000072ac0000 60K D:\software\Java\jdk1.8.0_151\jre\bin\verify.dll
0x0000000072ad0000 8820K D:\software\Java\jdk1.8.0_151\jre\bin\server\jvm.dll
0x0000000073370000 840K D:\software\Java\jdk1.8.0_151\jre\bin\msvcr100.dll
0x00007ff7b0af0000 220K D:\software\Java\jdk1.8.0_151\bin\java.exe
0x00007ffc80290000 156K C:\WINDOWS\SYSTEM32\WINMM.dll
0x00007ffc84070000 2664K C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.1110_none_60b5254171f9507e\COMCTL32.dll
0x00007ffc8e0c0000 92K C:\WINDOWS\SYSTEM32\dhcpcsvc6.DLL
0x00007ffc8f2e0000 40K C:\WINDOWS\SYSTEM32\VERSION.dll
0x00007ffc8f310000 116K C:\WINDOWS\SYSTEM32\dhcpcsvc.DLL
0x00007ffc91290000 36K C:\WINDOWS\SYSTEM32\WSOCK32.dll
0x00007ffc95780000 1936K C:\WINDOWS\SYSTEM32\dbghelp.dll
0x00007ffc95a60000 7760K C:\WINDOWS\SYSTEM32\windows.storage.dll
0x00007ffc96a40000 208K C:\WINDOWS\system32\rsaenh.dll
0x00007ffc96dd0000 236K C:\WINDOWS\SYSTEM32\IPHLPAPI.DLL
0x00007ffc96e20000 808K C:\WINDOWS\SYSTEM32\DNSAPI.dll
0x00007ffc97130000 424K C:\WINDOWS\system32\mswsock.dll
0x00007ffc97320000 48K C:\WINDOWS\SYSTEM32\CRYPTBASE.dll
0x00007ffc97330000 96K C:\WINDOWS\SYSTEM32\CRYPTSP.dll
0x00007ffc973d0000 176K C:\WINDOWS\SYSTEM32\Wldp.dll
0x00007ffc97830000 184K C:\WINDOWS\SYSTEM32\USERENV.dll
0x00007ffc978b0000 124K C:\WINDOWS\SYSTEM32\profapi.dll
0x00007ffc97970000 136K C:\WINDOWS\System32\win32u.dll
0x00007ffc97a10000 628K C:\WINDOWS\System32\msvcp_win.dll
0x00007ffc97cc0000 520K C:\WINDOWS\System32\bcryptprimitives.dll
0x00007ffc97d50000 156K C:\WINDOWS\System32\bcrypt.dll
0x00007ffc97d80000 1024K C:\WINDOWS\System32\ucrtbase.dll
0x00007ffc97ed0000 2848K C:\WINDOWS\System32\KERNELBASE.dll
0x00007ffc981a0000 1068K C:\WINDOWS\System32\gdi32full.dll
0x00007ffc982b0000 32K C:\WINDOWS\System32\NSI.dll
0x00007ffc98340000 340K C:\WINDOWS\System32\shlwapi.dll
0x00007ffc983a0000 7440K C:\WINDOWS\System32\SHELL32.dll
0x00007ffc98af0000 632K C:\WINDOWS\System32\msvcrt.dll
0x00007ffc98c60000 1172K C:\WINDOWS\System32\RPCRT4.dll
0x00007ffc99080000 760K C:\WINDOWS\System32\KERNEL32.DLL
0x00007ffc99140000 692K C:\WINDOWS\System32\SHCORE.dll
0x00007ffc99320000 3408K C:\WINDOWS\System32\combase.dll
0x00007ffc99680000 172K C:\WINDOWS\System32\GDI32.dll
0x00007ffc997f0000 624K C:\WINDOWS\System32\sechost.dll
0x00007ffc99920000 428K C:\WINDOWS\System32\WS2_32.dll
0x00007ffc99990000 1664K C:\WINDOWS\System32\USER32.dll
0x00007ffc99b30000 192K C:\WINDOWS\System32\IMM32.DLL
0x00007ffc99b60000 32K C:\WINDOWS\System32\PSAPI.DLL
0x00007ffc99b70000 696K C:\WINDOWS\System32\ADVAPI32.dll
0x00007ffc9a250000 2004K C:\WINDOWS\SYSTEM32\ntdll.dll