Jmap:可以获得运行中的jvm的堆的快照,从而可以离线分析堆,以检查内存泄漏,检查一些严重影响性能的大对象的创建,检查系统中什么对象最多,各种对象所占内存的大小等等
Jmap是一个可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。
使用方法 jmap -histo pid。如果使用SHELL ,可采用jmap -histo pid>a.log日志将其保存到文件 中,在一段时间后,使用文本对比工具,可以对比出GC回收了哪些对象。jmap -dump:format=b,file=outfile 3024可以 将3024进程的内存heap输出出来到outfile文件里,再配合MAT(内存分析工具)。
Code:
D:\Program Files\Java\jdk1..0_102\bin
$ jmap -heap
Attaching to process ID , please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.102-b14 using thread-local object allocation.
Parallel GC with thread(s) Heap Configuration:
MinHeapFreeRatio =
MaxHeapFreeRatio =
MaxHeapSize = (.0MB)
NewSize = (.0MB)
MaxNewSize = (.0MB)
OldSize = (.0MB)
NewRatio =
SurvivorRatio =
MetaspaceSize = (.796875MB)
CompressedClassSpaceSize = (.0MB)
MaxMetaspaceSize = MB
G1HeapRegionSize = (.0MB) Heap Usage:
PS Young Generation
Eden Space:
capacity = (.0MB)
used = (.036903381347656MB)
free = (.963096618652344MB)
61.40936574628276% used
From Space:
capacity = (.0MB)
used = (.07037353515625MB)
free = (.92962646484375MB)
81.407470703125% used
To Space:
capacity = (.0MB)
used = (.0MB)
free = (.0MB)
0.0% used
PS Old Generation
capacity = (.0MB)
used = (.085968017578125MB)
free = (.91403198242188MB)
19.380684358527862% used interned Strings occupying bytes.
https://www.cnblogs.com/qlqwjy/p/7953491.html
jps:显示当前所有java进程pid的命令,简单实用
D:\Program Files\Java\jdk1..0_102\bin
$ jps
RemoteMavenServer
Jps
Launcher
jstack:
jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。
线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。
如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。
另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。
So,jstack命令主要用来查看Java线程的调用堆栈的,可以用来分析线程问题(如死锁)。
D:\Program Files\Java\jdk1..0_102\bin
$ jstack
-- ::
Full thread dump Java HotSpot(TM) -Bit Server VM (25.102-b14 mixed mode):
......
具体:
D:\Program Files\Java\jdk1..0_102\bin
$ jstack
-- ::
Full thread dump Java HotSpot(TM) -Bit Server VM (25.102-b14 mixed mode): "RMI RenewClean-[localhost:2913]" # daemon prio= os_prio= tid=0x0000000016d52800 nid=0x1284 in Object.wait() [0x0000000017a7e000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:)
- locked <0x00000000d00fbc40> (a java.lang.ref.ReferenceQueue$Lock)
at sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(DGCClient.java:)
at java.lang.Thread.run(Thread.java:) "RMI Scheduler(0)" # daemon prio= os_prio= tid=0x0000000016d50000 nid=0x27d4 waiting on condition [0x000000001797e000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000d0010a50> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:)
at java.lang.Thread.run(Thread.java:) "GC Daemon" # daemon prio= os_prio=- tid=0x0000000016b8f000 nid=0x421c in Object.wait() [0x000000001757f000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at sun.misc.GC$Daemon.run(GC.java:)
- locked <0x00000000d0009450> (a sun.misc.GC$LatencyLock) "RMI Reaper" # prio= os_prio= tid=0x0000000016b8e000 nid=0x3b18 in Object.wait() [0x000000001747f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:)
- locked <0x00000000d00014d0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:)
at sun.rmi.transport.ObjectTable$Reaper.run(ObjectTable.java:)
at java.lang.Thread.run(Thread.java:) "RMI TCP Accept-0" # daemon prio= os_prio= tid=0x0000000016b8d800 nid=0x4890 runnable [0x000000001737e000]
java.lang.Thread.State: RUNNABLE
at java.net.DualStackPlainSocketImpl.accept0(Native Method)
at java.net.DualStackPlainSocketImpl.socketAccept(DualStackPlainSocketImpl.java:)
at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:)
- locked <0x00000000d000f990> (a java.net.SocksSocketImpl)
at java.net.ServerSocket.implAccept(ServerSocket.java:)
at java.net.ServerSocket.accept(ServerSocket.java:)
at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:)
at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:)
at java.lang.Thread.run(Thread.java:) "RMI TCP Accept-33846" # daemon prio= os_prio= tid=0x00000000160a0000 nid=0x2ee8 runnable [0x0000000016a7e000]
java.lang.Thread.State: RUNNABLE
at java.net.DualStackPlainSocketImpl.accept0(Native Method)
at java.net.DualStackPlainSocketImpl.socketAccept(DualStackPlainSocketImpl.java:)
at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:)
- locked <0x00000000d0016fd8> (a java.net.SocksSocketImpl)
at java.net.ServerSocket.implAccept(ServerSocket.java:)
at java.net.ServerSocket.accept(ServerSocket.java:)
at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:)
at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:)
at java.lang.Thread.run(Thread.java:) "Service Thread" # daemon prio= os_prio= tid=0x0000000015ef7800 nid=0x2538 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE "C1 CompilerThread2" # daemon prio= os_prio= tid=0x0000000015eb2000 nid=0x2534 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE "C2 CompilerThread1" # daemon prio= os_prio= tid=0x0000000015e7b000 nid=0x45b0 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE "C2 CompilerThread0" # daemon prio= os_prio= tid=0x0000000015e79000 nid=0x2500 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE "Attach Listener" # daemon prio= os_prio= tid=0x0000000014abd800 nid=0x2530 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE "Signal Dispatcher" # daemon prio= os_prio= tid=0x0000000014a71800 nid=0x24fc runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE "Finalizer" # daemon prio= os_prio= tid=0x0000000002cee800 nid=0xcac in Object.wait() [0x0000000015dbf000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:)
- locked <0x00000000d0009eb0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:) "Reference Handler" # daemon prio= os_prio= tid=0x0000000002ce5000 nid=0x32e0 in Object.wait() [0x0000000015cbe000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:)
at java.lang.ref.Reference.tryHandlePending(Reference.java:)
- locked <0x00000000d0001688> (a java.lang.ref.Reference$Lock)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:) "main" # prio= os_prio= tid=0x0000000002bf4000 nid=0x17ac in Object.wait() [0x000000000289f000] java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at com.intellij.execution.rmi.RemoteServer.start(RemoteServer.java:)
- locked <0x00000000d0009ef0> (a java.lang.Object)
at org.jetbrains.idea.maven.server.RemoteMavenServer.main(RemoteMavenServer.java:) "VM Thread" os_prio= tid=0x0000000014a27000 nid=0xb18 runnable "GC task thread#0 (ParallelGC)" os_prio= tid=0x0000000002c0a000 nid=0x3ca8 runnable "GC task thread#1 (ParallelGC)" os_prio= tid=0x0000000002c0b800 nid=0x35f8 runnable "GC task thread#2 (ParallelGC)" os_prio= tid=0x0000000002c0d800 nid=0x1044 runnable "GC task thread#3 (ParallelGC)" os_prio= tid=0x0000000002c0f000 nid=0x3ff8 runnable "VM Periodic Task Thread" os_prio= tid=0x0000000015f45800 nid=0x293c waiting on condition JNI global references:
https://www.cnblogs.com/chenpi/p/5377445.html
jstat:
jstat(JVM Statistics Monitoring Tool)是用于监控虚拟机各种运行状态信息的命令行工具。他可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形的服务器上,它是运行期定位虚拟机性能问题的首选工具。
jstat位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。
D:\Program Files\Java\jdk1..0_102\bin
$ jstat -gc
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
34048.0 34048.0 11948.2 0.0 272640.0 86062.3 278508.0 155625.8 351652.0 327552.2 50564.0 45442.3 5.785 24.346 30.131 D:\Program Files\Java\jdk1..0_102\bin
$ jstat -class
Loaded Bytes Unloaded Bytes Time
122416.9 3099.5 82.53 D:\Program Files\Java\jdk1..0_102\bin
$ jstat -compiler
Compiled Failed Invalid Time FailedType FailedMethod
664.16 org/apache/xerces/impl/XMLNSDocumentScannerImpl scanStartElement D:\Program Files\Java\jdk1..0_102\bin
$ jstat -gcutil
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
35.09 0.00 36.40 55.88 93.15 89.87 5.785 24.346 30.131
选项option代表这用户希望查询的虚拟机信息,主要分为3类:类装载、垃圾收集和运行期编译状况,具体选项及作用如下:
–class 监视类装载、卸载数量、总空间及类装载所耗费的时间
–gc 监视Java堆状况,包括Eden区、2个Survivor区、老年代、永久代等的容量
–gccapacity 监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大和最小空间
–gcutil 监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比
–gccause 与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因
–gcnew 监视新生代GC的状况
–gcnewcapacity 监视内容与-gcnew基本相同,输出主要关注使用到的最大和最小空间
–gcold 监视老年代GC的状况
–gcoldcapacity 监视内容与——gcold基本相同,输出主要关注使用到的最大和最小空间
–gcpermcapacity 输出永久代使用到的最大和最小空间
–compiler 输出JIT编译器编译过的方法、耗时等信息
–printcompilation 输出已经被JIT编译的方法
常见术语
1、jstat –class<pid> : 显示加载class的数量,及所占空间等信息。
Loaded 装载的类的数量
Bytes 装载类所占用的字节数
Unloaded 卸载类的数量
Bytes 卸载类的字节数
Time 装载和卸载类所花费的时间
2、jstat -compiler <pid>显示VM实时编译的数量等信息。
Compiled 编译任务执行数量
Failed 编译任务执行失败数量
Invalid 编译任务执行失效数量
Time 编译任务消耗时间
FailedType 最后一个编译失败任务的类型
FailedMethod 最后一个编译失败任务所在的类及方法
3、jstat -gc <pid>: 可以显示gc的信息,查看gc的次数,及时间。
S0C 年轻代中第一个survivor(幸存区)的容量 (字节)
S1C 年轻代中第二个survivor(幸存区)的容量 (字节)
S0U 年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
S1U 年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
EC 年轻代中Eden(伊甸园)的容量 (字节)
EU 年轻代中Eden(伊甸园)目前已使用空间 (字节)
OC Old代的容量 (字节)
OU Old代目前已使用空间 (字节)
PC Perm(持久代)的容量 (字节)
PU Perm(持久代)目前已使用空间 (字节)
YGC 从应用程序启动到采样时年轻代中gc次数
YGCT 从应用程序启动到采样时年轻代中gc所用时间(s)
FGC 从应用程序启动到采样时old代(全gc)gc次数
FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT 从应用程序启动到采样时gc用的总时间(s)
4、jstat -gccapacity <pid>:可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小
NGCMN 年轻代(young)中初始化(最小)的大小(字节)
NGCMX 年轻代(young)的最大容量 (字节)
NGC 年轻代(young)中当前的容量 (字节)
S0C 年轻代中第一个survivor(幸存区)的容量 (字节)
S1C 年轻代中第二个survivor(幸存区)的容量 (字节)
EC 年轻代中Eden(伊甸园)的容量 (字节)
OGCMN old代中初始化(最小)的大小 (字节)
OGCMX old代的最大容量(字节)
OGC old代当前新生成的容量 (字节)
OC Old代的容量 (字节)
PGCMN perm代中初始化(最小)的大小 (字节)
PGCMX perm代的最大容量 (字节)
PGC perm代当前新生成的容量 (字节)
PC Perm(持久代)的容量 (字节)
YGC 从应用程序启动到采样时年轻代中gc次数
FGC 从应用程序启动到采样时old代(全gc)gc次数
5、jstat -gcutil <pid>:统计gc信息
S0 年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
S1 年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
E 年轻代中Eden(伊甸园)已使用的占当前容量百分比
O old代已使用的占当前容量百分比
P perm代已使用的占当前容量百分比
YGC 从应用程序启动到采样时年轻代中gc次数
YGCT 从应用程序启动到采样时年轻代中gc所用时间(s)
FGC 从应用程序启动到采样时old代(全gc)gc次数
FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT 从应用程序启动到采样时gc用的总时间(s)
6、jstat -gcnew <pid>:年轻代对象的信息。
S0C 年轻代中第一个survivor(幸存区)的容量 (字节)
S1C 年轻代中第二个survivor(幸存区)的容量 (字节)
S0U 年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
S1U 年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
TT 持有次数限制
MTT 最大持有次数限制
EC 年轻代中Eden(伊甸园)的容量 (字节)
EU 年轻代中Eden(伊甸园)目前已使用空间 (字节)
YGC 从应用程序启动到采样时年轻代中gc次数
YGCT 从应用程序启动到采样时年轻代中gc所用时间(s)
7、jstat -gcnewcapacity<pid>: 年轻代对象的信息及其占用量。
NGCMN 年轻代(young)中初始化(最小)的大小(字节)
NGCMX 年轻代(young)的最大容量 (字节)
NGC 年轻代(young)中当前的容量 (字节)
S0CMX 年轻代中第一个survivor(幸存区)的最大容量 (字节)
S0C 年轻代中第一个survivor(幸存区)的容量 (字节)
S1CMX 年轻代中第二个survivor(幸存区)的最大容量 (字节)
S1C 年轻代中第二个survivor(幸存区)的容量 (字节)
ECMX 年轻代中Eden(伊甸园)的最大容量 (字节)
EC 年轻代中Eden(伊甸园)的容量 (字节)
YGC 从应用程序启动到采样时年轻代中gc次数
FGC 从应用程序启动到采样时old代(全gc)gc次数
8、jstat -gcold <pid>:old代对象的信息。
PC Perm(持久代)的容量 (字节)
PU Perm(持久代)目前已使用空间 (字节)
OC Old代的容量 (字节)
OU Old代目前已使用空间 (字节)
YGC 从应用程序启动到采样时年轻代中gc次数
FGC 从应用程序启动到采样时old代(全gc)gc次数
FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT 从应用程序启动到采样时gc用的总时间(s)
9、stat -gcoldcapacity <pid>: old代对象的信息及其占用量。
OGCMN old代中初始化(最小)的大小 (字节)
OGCMX old代的最大容量(字节)
OGC old代当前新生成的容量 (字节)
OC Old代的容量 (字节)
YGC 从应用程序启动到采样时年轻代中gc次数
FGC 从应用程序启动到采样时old代(全gc)gc次数
FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT 从应用程序启动到采样时gc用的总时间(s)
10、jstat -gcpermcapacity<pid>: perm对象的信息及其占用量。
PGCMN perm代中初始化(最小)的大小 (字节)
PGCMX perm代的最大容量 (字节)
PGC perm代当前新生成的容量 (字节)
PC Perm(持久代)的容量 (字节)
YGC 从应用程序启动到采样时年轻代中gc次数
FGC 从应用程序启动到采样时old代(全gc)gc次数
FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT 从应用程序启动到采样时gc用的总时间(s)
11、jstat -printcompilation <pid>:当前VM执行的信息。
Compiled 编译任务的数目
Size 方法生成的字节码的大小
Type 编译类型
Method 类名和方法名用来标识编译的方法。类名使用/做为一个命名空间分隔符。方法名是给定类中的方法。上述格式是由-XX:+PrintComplation选项进行设置的
====================================================
jhat:
jhat(Java Heap Analysis Tool),是一个用来分析java的堆情况的命令。之前的文章讲到过,使用jmap可以生成Java堆的Dump文件。生成dump文件之后就可以用jhat命令,将dump文件转成html的形式,然后通过http访问可以查看堆情况。
jhat命令解析会Java堆dump并启动一个web服务器,然后就可以在浏览器中查看堆的dump文件了。
D:\Program Files\Java\jdk1..0_102\bin
$ jps -l
org.jetbrains.idea.maven.server.RemoteMavenServer
sun.tools.jps.Jps
org.jetbrains.jps.cmdline.Launcher D:\Program Files\Java\jdk1..0_102\bin
$ jmap -dump:format=b,file=heapDump
Dumping heap to D:\Program Files\Java\jdk1..0_102\bin\heapDump ...
Heap dump file created D:\Program Files\Java\jdk1..0_102\bin
$ jhat heapDump
Reading from heapDump...
Dump file created Wed Mar :: CST
Snapshot read, resolving...
Resolving objects...
Chasing references, expect dots..............................
Eliminating duplicate references.................................
Snapshot resolved.
Started HTTP server on port
Server is ready.
jinfo:列出jvm进程相关配置信息
D:\Program Files\Java\jdk1..0_102\bin
$ jinfo
Attaching to process ID , please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.102-b14
Java System Properties: java.vendor = Oracle Corporation
sun.java2d.uiScale.enabled = true
idea.config.path = D:/Program Files (x86)/JetBrains/IDEA Configuration And Cache/config
sun.management.compiler = HotSpot -Bit Tiered Compilers
sun.nio.ch.bugLevel =
idea.paths.selector = IntelliJIdea2017.
jnidispatch.path = D:\Program Files (x86)\JetBrains\IDEA Configuration And Cache\system\tmp\jna4994633568019551061.dll
winp.unpack.dll.to.parent.dir = false
os.name = Windows
sun.boot.class.path = D:\Program Files\Java\jdk1..0_102\jre\lib\resources.jar;D:\Program Files\Java\jdk1..0_102\jre\lib\rt.jar;D:\Program Files\Java\jdk1..0_102\jre\lib\sunrsasign.jar;D:\Program Files\Java\jdk1..0_102\jre\lib\jsse.jar;D:\Program Files\Java\jdk1..0_102\jre\lib\jce.jar;D:\Program Files\Java\jdk1..0_102\jre\lib\charsets.jar;D:\Program Files\Java\jdk1..0_102\jre\lib\jfr.jar;D:\Program Files\Java\jdk1..0_102\jre\classes;D:\Program Files (x86)\JetBrains\ideaIU-2017.2..win\lib\boot.jar
idea.system.path = D:/Program Files (x86)/JetBrains/IDEA Configuration And Cache/system
sun.desktop = windows
java.vm.specification.vendor = Oracle Corporation
idea.plugins.path = D:/Program Files (x86)/JetBrains/IDEA Configuration And Cache/config/plugins
java.runtime.version = 1.8.0_102-b14
jb.vmOptionsFile = D:\Program Files (x86)\JetBrains\ideaIU-2017.2..win\bin\idea64.exe.vmoptions
jna.loaded = true
io.netty.serviceThreadPrefix = Netty
user.name = qhong
sun.java2d.pmoffscreen = false
java.rmi.server.disableHttp = true
svnkit.http.methods = Basic,Digest,NTLM
user.language = zh
sun.boot.library.path = D:\Program Files\Java\jdk1..0_102\jre\bin
idea.fatal.error.notification = disabled
jna.nosys = true
idea.registered = true
sun.io.useCanonCaches = false
java.version = 1.8.0_102
swing.bufferPerWindow = true
user.timezone = Asia/Shanghai
java.net.preferIPv4Stack = true
sun.arch.data.model =
java.util.concurrent.ForkJoinPool.common.threadFactory = com.intellij.concurrency.IdeaForkJoinWorkerThreadFactory
jna.tmpdir = D:\Program Files (x86)\JetBrains\IDEA Configuration And Cache\system\tmp
java.endorsed.dirs = D:\Program Files\Java\jdk1..0_102\jre\lib\endorsed
apple.awt.UIElement = true
sun.cpu.isalist = amd64
sun.jnu.encoding = GBK
file.encoding.pkg = sun.io
file.separator = \
java.specification.name = Java Platform API Specification
java.class.version = 52.0
user.country = CN
sun.awt.noerasebackground = true
java.home = D:\Program Files\Java\jdk1..0_102\jre
java.util.concurrent.ForkJoinPool.common.parallelism =
java.vm.info = mixed mode
os.version = 10.0
path.separator = ;
java.vm.version = 25.102-b14
idea.no.launcher = false
user.variant =
idea.max.content.load.filesize =
sun.awt.enableExtraMouseButtons = true
java.awt.printerjob = sun.awt.windows.WPrinterJob
javax.swing.rebaseCssSizeMap = true
sun.io.unicode.encoding = UnicodeLittle
awt.toolkit = sun.awt.windows.WToolkit
idea.cycle.buffer.size =
log4j.defaultInitOverride = true
io.netty.processId =
user.script =
sun.awt.exception.handler = com.intellij.openapi.application.impl.AWTExceptionHandler
user.home = C:\Users\qhong
idea.dynamic.classpath = false
__idea.mac.env.lock = unlocked
java.specification.vendor = Oracle Corporation
idea.log.path = D:/Program Files (x86)/JetBrains/IDEA Configuration And Cache/system/log
java.library.path = D:\Program Files (x86)\JetBrains\ideaIU-2017.2..win\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.\;C:\Program Files\TortoiseGit\bin;C:\Users\qhong\.dnx\bin;C:\Program Files\Microsoft DNX\Dnvm\;C:\Program Files\Microsoft SQL Server\\DTS\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\\Tools\Binn\;C:\Program Files\Microsoft SQL Server\\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\\Tools\Binn\ManagementStudio\;C:\Program Files (x86)\Microsoft SQL Server\\DTS\Binn\;%ANDROID_HOME%;%ANDROID_HOME%\tools;%ANDROID_HOME%\build-tools;%ANDROID_HOME%\platform-tools;D:\Program Files\Tomcat8\bin;D:\Program Files\Java\jdk1..0_102\bin;D:\Program Files\Java\jdk1..0_102\jre\bin;D:\Program Files\MySQL\bin;D:\Program Files (x86)\JetBrains\IDEA Configuration And Cache\maven\bin;%GRADLE_HOME%\bin;D:\Program Files (x86)\JetBrains\IDEA Configuration And Cache\maven\bin;C:\Program Files\Git\cmd;D:\Program Files\cmder;C:\Program Files\TortoiseSVN\bin;D:\Program Files\nodejs;D:\Program Files\curl\bin;C:\Users\qhong\AppData\Local\Microsoft\WindowsApps;;C:\Program Files\Microsoft VS Code\bin;C:\Users\qhong\AppData\Local\Programs\Fiddler;.
java.vendor.url = http://java.oracle.com/
java.vm.vendor = Oracle Corporation
java.runtime.name = Java(TM) SE Runtime Environment
java.class.path = D:\Program Files (x86)\JetBrains\ideaIU-2017.2..win\lib\bootstrap.jar;D:\Program Files (x86)\JetBrains\ideaIU-2017.2..win\lib\extensions.jar;D:\Program Files (x86)\JetBrains\ideaIU-2017.2..win\lib\util.jar;D:\Program Files (x86)\JetBrains\ideaIU-2017.2..win\lib\jdom.jar;D:\Program Files (x86)\JetBrains\ideaIU-2017.2..win\lib\log4j.jar;D:\Program Files (x86)\JetBrains\ideaIU-2017.2..win\lib\trove4j.jar;D:\Program Files (x86)\JetBrains\ideaIU-2017.2..win\lib\jna.jar;D:\Program Files\Java\jdk1..0_102\lib\tools.jar
io.netty.machineId = :f0::ff:fe:::0e
java.vm.specification.name = Java Virtual Machine Specification
idea.xdebug.key = -Xdebug
java.vm.specification.version = 1.8
idea.popup.weight = heavy
sun.cpu.endian = little
sun.os.patch.level =
java.io.tmpdir = C:\Users\qhong\AppData\Local\Temp\
java.vendor.url.bug = http://bugreport.sun.com/bugreport/
svnkit.log.native.calls = true
java.rmi.server.hostname = localhost
os.arch = amd64
java.awt.graphicsenv = sun.awt.Win32GraphicsEnvironment
idea.max.intellisense.filesize =
java.ext.dirs = D:\Program Files\Java\jdk1..0_102\jre\lib\ext;C:\Windows\Sun\Java\lib\ext
idea.jre.check = true
user.dir = D:\Program Files (x86)\JetBrains\ideaIU-2017.2..win\bin
line.separator = java.vm.name = Java HotSpot(TM) -Bit Server VM
java.util.Arrays.useLegacyMergeSort = true
file.encoding = UTF-
java.specification.version = 1.8
sun.java2d.d3d = false VM Flags:
Non-default VM flags: -XX:CICompilerCount= -XX:ErrorFile=null -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=null -XX:InitialHeapSize= -XX:MaxHeapSize= -XX:MaxNewSize= -XX:MaxTenuringThreshold= -XX:MinHeapDeltaBytes= -XX:NewSize= -XX:OldPLABSize= -XX:OldSize= -XX:-OmitStackTraceInFastThrow -XX:ReservedCodeCacheSize= -XX:SoftRefLRUPolicyMSPerMB= -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseFastUnorderedTimeStamps -XX:-UseLargePagesIndividualAllocation -XX:+UseParNewGC
Command line: -Xms512m -Xmx1500m -XX:ReservedCodeCacheSize=500m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB= -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Dfile.encoding=UTF- -Duser.name=qhong -Djb.vmOptionsFile=D:\Program Files (x86)\JetBrains\ideaIU-2017.2..win\bin\idea64.exe.vmoptions -Xbootclasspath/a:D:\Program Files (x86)\JetBrains\ideaIU-2017.2..win\lib\boot.jar -Didea.jre.check=true -Didea.paths.selector=IntelliJIdea2017. -XX:ErrorFile=C:\Users\qhong\java_error_in_idea_%p.log -XX:HeapDumpPath=C:\Users\qhong\java_error_in_idea.hprof