JVM GC日志分析
JVM GC日志分析
秋风醉了 发表于6个月前
JVM GC日志分析
  • 发表于 6个月前
  • 阅读 22
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

摘要: JVM GC日志分析

JVM GC日志分析

JVM 垃圾回收器https://my.oschina.net/xinxingegeya/blog/1530211

jvm参数设置shell脚本

#!/bin/sh

error_exit ()
{
    echo "ERROR: $1 !!"
    exit 1
}
# -e filename 表示文件是否存在
# $HOME 取默认的环境变量 HOME 变量
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java
[ ! -e "$JAVA_HOME/bin/java" ] && error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)!"

# 通过 export 命令导出到全局环境变量中
# ${var} 返回变量值 推荐这种写法 可以使代码的可读性更好避免歧义
# $(dirname $0) 返回这个脚本文件放置的目录
# export BASE_DIR=$(dirname $0)/.. 设置BASE_DIR为脚本文件放置的目录的上级目录
# 比如 cd ./..  返回上级目录
export JAVA_HOME
export JAVA="$JAVA_HOME/bin/java"
export BASE_DIR=$(dirname $0)/..
export CLASSPATH=.:${BASE_DIR}:${CLASSPATH}

#===========================================================================================
# JVM Configuration
#  -Xms<size>        设置初始 Java 堆大小
#  -Xmx<size>        设置最大 Java 堆大小
#  -Xmnsize Sets the initial and maximum size (in bytes) of the heap for the young generation (nursery).
#===========================================================================================
JAVA_OPT="${JAVA_OPT} -Xms50m -Xmx50m -Xmn20m"
JAVA_OPT="${JAVA_OPT} -XX:+UseSerialGC -XX:SurvivorRatio=8"
JAVA_OPT="${JAVA_OPT} -verbose:gc -Xloggc:/Users/xinxingegeya/logs/test_gc_%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps"

# $@ 是传给脚本的所有参数的列表
$JAVA ${JAVA_OPT} $@

 

SerialGC日志

➜  logs tail -f -n 1000 test_gc_pid10073.log
Java HotSpot(TM) 64-Bit Server VM (25.51-b03) for bsd-amd64 JRE (1.8.0_51-b16), built on Jun  8 2015 18:01:11 by "java_re" with gcc 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)
Memory: 4k page, physical 8388608k(181496k free)

/proc/meminfo:

CommandLine flags: -XX:InitialHeapSize=52428800 -XX:MaxHeapSize=52428800 -XX:MaxNewSize=20971520 -XX:NewSize=20971520 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:SurvivorRatio=8 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseSerialGC
2017-09-08T10:47:14.532-0800: 0.133: [GC (Allocation Failure) 0.133: [DefNew: 6758K->471K(18432K), 0.0098096 secs] 6758K->5591K(49152K), 0.0098996 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
2017-09-08T10:47:14.545-0800: 0.146: [Full GC (System.gc()) 0.146: [Tenured: 5120K->15828K(30720K), 0.0206792 secs] 16159K->15828K(49152K), [Metaspace: 2802K->2802K(1056768K)], 0.0207613 secs] [Times: user=0.01 sys=0.00, real=0.02 secs]
2017-09-08T10:47:14.566-0800: 0.167: [GC (Allocation Failure) 0.167: [DefNew: 0K->0K(18432K), 0.0014000 secs]0.169: [Tenured: 15828K->15828K(30720K), 0.0037779 secs] 15828K->15828K(49152K), [Metaspace: 2802K->2802K(1056768K)], 0.0053251 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
2017-09-08T10:47:14.571-0800: 0.172: [Full GC (Allocation Failure) 0.172: [Tenured: 15828K->15817K(30720K), 0.0033896 secs] 15828K->15817K(49152K), [Metaspace: 2802K->2802K(1056768K)], 0.0034846 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
Heap
 def new generation   total 18432K, used 814K [0x00000007bce00000, 0x00000007be200000, 0x00000007be200000)
  eden space 16384K,   4% used [0x00000007bce00000, 0x00000007bcecbb28, 0x00000007bde00000)
  from space 2048K,   0% used [0x00000007bde00000, 0x00000007bde00000, 0x00000007be000000)
  to   space 2048K,   0% used [0x00000007be000000, 0x00000007be000000, 0x00000007be200000)
 tenured generation   total 30720K, used 15817K [0x00000007be200000, 0x00000007c0000000, 0x00000007c0000000)
   the space 30720K,  51% used [0x00000007be200000, 0x00000007bf172750, 0x00000007bf172800, 0x00000007c0000000)
 Metaspace       used 2833K, capacity 4486K, committed 4864K, reserved 1056768K
  class space    used 306K, capacity 386K, committed 512K, reserved 1048576K

 

ParallelGC  -XX:+UseParallelGC日志

➜  logs tail -f -n 1000 test_gc_pid5860.log
Java HotSpot(TM) 64-Bit Server VM (25.51-b03) for bsd-amd64 JRE (1.8.0_51-b16), built on Jun  8 2015 18:01:11 by "java_re" with gcc 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)
Memory: 4k page, physical 8388608k(189324k free)

/proc/meminfo:

CommandLine flags: -XX:InitialHeapSize=52428800 -XX:MaxHeapSize=52428800 -XX:MaxNewSize=20971520 -XX:NewSize=20971520 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:SurvivorRatio=8 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC
2017-09-07T16:21:43.959-0800: 0.110: [GC (System.gc()) [PSYoungGen: 6759K->576K(18432K)] 16999K->15944K(49152K), 0.0059292 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]
2017-09-07T16:21:43.965-0800: 0.116: [Full GC (System.gc()) [PSYoungGen: 576K->0K(18432K)] [ParOldGen: 15368K->15830K(30720K)] 15944K->15830K(49152K), [Metaspace: 2802K->2802K(1056768K)], 0.0065073 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
2017-09-07T16:21:43.972-0800: 0.122: [GC (Allocation Failure) [PSYoungGen: 0K->0K(18432K)] 15830K->15830K(49152K), 0.0005157 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
2017-09-07T16:21:43.972-0800: 0.123: [GC (Allocation Failure) [PSYoungGen: 0K->0K(18432K)] 15830K->15830K(49152K), 0.0004253 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
2017-09-07T16:21:43.973-0800: 0.124: [Full GC (Allocation Failure) [PSYoungGen: 0K->0K(18432K)] [ParOldGen: 15830K->15830K(30720K)] 15830K->15830K(49152K), [Metaspace: 2802K->2802K(1056768K)], 0.0075292 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
2017-09-07T16:21:43.980-0800: 0.131: [GC (Allocation Failure) [PSYoungGen: 0K->0K(18432K)] 15830K->15830K(49152K), 0.0007725 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
2017-09-07T16:21:43.981-0800: 0.132: [Full GC (Allocation Failure) [PSYoungGen: 0K->0K(18432K)] [ParOldGen: 15830K->15819K(30720K)] 15830K->15819K(49152K), [Metaspace: 2802K->2802K(1056768K)], 0.0066556 secs] [Times: user=0.01 sys=0.01, real=0.00 secs]
Heap
 PSYoungGen      total 18432K, used 491K [0x00000007bec00000, 0x00000007c0000000, 0x00000007c0000000)
  eden space 16384K, 3% used [0x00000007bec00000,0x00000007bec7afa0,0x00000007bfc00000)
  from space 2048K, 0% used [0x00000007bfe00000,0x00000007bfe00000,0x00000007c0000000)
  to   space 2048K, 0% used [0x00000007bfc00000,0x00000007bfc00000,0x00000007bfe00000)
 ParOldGen       total 30720K, used 15819K [0x00000007bce00000, 0x00000007bec00000, 0x00000007bec00000)
  object space 30720K, 51% used [0x00000007bce00000,0x00000007bdd72e70,0x00000007bec00000)
 Metaspace       used 2833K, capacity 4486K, committed 4864K, reserved 1056768K
  class space    used 306K, capacity 386K, committed 512K, reserved 1048576K

 

ParallelGC  -XX:+UseParallelOldGC日志

➜  logs tail -f -n 1000 test_gc_pid6379.log
Java HotSpot(TM) 64-Bit Server VM (25.51-b03) for bsd-amd64 JRE (1.8.0_51-b16), built on Jun  8 2015 18:01:11 by "java_re" with gcc 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)
Memory: 4k page, physical 8388608k(145140k free)

/proc/meminfo:

CommandLine flags: -XX:InitialHeapSize=52428800 -XX:MaxHeapSize=52428800 -XX:MaxNewSize=20971520 -XX:NewSize=20971520 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:SurvivorRatio=8 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelOldGC
2017-09-07T16:46:06.679-0800: 0.102: [GC (System.gc()) [PSYoungGen: 6758K->576K(18432K)] 16998K->15944K(49152K), 0.0045953 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
2017-09-07T16:46:06.683-0800: 0.107: [Full GC (System.gc()) [PSYoungGen: 576K->0K(18432K)] [ParOldGen: 15368K->15830K(30720K)] 15944K->15830K(49152K), [Metaspace: 2802K->2802K(1056768K)], 0.0064246 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
2017-09-07T16:46:06.690-0800: 0.113: [GC (Allocation Failure) [PSYoungGen: 0K->0K(18432K)] 15830K->15830K(49152K), 0.0015259 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
2017-09-07T16:46:06.692-0800: 0.115: [GC (Allocation Failure) [PSYoungGen: 0K->0K(18432K)] 15830K->15830K(49152K), 0.0004533 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
2017-09-07T16:46:06.692-0800: 0.116: [Full GC (Allocation Failure) [PSYoungGen: 0K->0K(18432K)] [ParOldGen: 15830K->15830K(30720K)] 15830K->15830K(49152K), [Metaspace: 2802K->2802K(1056768K)], 0.0063917 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
2017-09-07T16:46:06.699-0800: 0.122: [GC (Allocation Failure) [PSYoungGen: 0K->0K(18432K)] 15830K->15830K(49152K), 0.0006822 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
2017-09-07T16:46:06.700-0800: 0.123: [Full GC (Allocation Failure) [PSYoungGen: 0K->0K(18432K)] [ParOldGen: 15830K->15819K(30720K)] 15830K->15819K(49152K), [Metaspace: 2802K->2802K(1056768K)], 0.0064318 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
Heap
 PSYoungGen      total 18432K, used 491K [0x00000007bec00000, 0x00000007c0000000, 0x00000007c0000000)
  eden space 16384K, 3% used [0x00000007bec00000,0x00000007bec7afa0,0x00000007bfc00000)
  from space 2048K, 0% used [0x00000007bfe00000,0x00000007bfe00000,0x00000007c0000000)
  to   space 2048K, 0% used [0x00000007bfc00000,0x00000007bfc00000,0x00000007bfe00000)
 ParOldGen       total 30720K, used 15819K [0x00000007bce00000, 0x00000007bec00000, 0x00000007bec00000)
  object space 30720K, 51% used [0x00000007bce00000,0x00000007bdd72f18,0x00000007bec00000)
 Metaspace       used 2833K, capacity 4486K, committed 4864K, reserved 1056768K
  class space    used 306K, capacity 386K, committed 512K, reserved 1048576K

 

Concurrent Mark Sweep (CMS) Collector 日志

-XX:+UseConcMarkSweepGC -XX:ParallelCMSThreads=2

➜  logs tail -f -n 1000 test_gc_pid7090.log
Java HotSpot(TM) 64-Bit Server VM (25.51-b03) for bsd-amd64 JRE (1.8.0_51-b16), built on Jun  8 2015 18:01:11 by "java_re" with gcc 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)
Memory: 4k page, physical 8388608k(73376k free)

/proc/meminfo:

CommandLine flags: -XX:ConcGCThreads=2 -XX:InitialHeapSize=52428800 -XX:MaxHeapSize=52428800 -XX:MaxNewSize=20971520 -XX:NewSize=20971520 -XX:OldPLABSize=16 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:SurvivorRatio=8 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
2017-09-07T18:18:21.554-0800: 0.367: [GC (Allocation Failure) 0.367: [ParNew: 6758K->485K(18432K), 0.0539135 secs] 6758K->5608K(49152K), 0.0541729 secs] [Times: user=0.02 sys=0.00, real=0.05 secs]
2017-09-07T18:18:21.613-0800: 0.427: [Full GC (System.gc()) 0.427: [CMS: 5122K->15833K(30720K), 0.0283206 secs] 16175K->15833K(49152K), [Metaspace: 2800K->2800K(1056768K)], 0.0284720 secs] [Times: user=0.01 sys=0.01, real=0.03 secs]
2017-09-07T18:18:21.642-0800: 0.455: [GC (Allocation Failure) 0.455: [ParNew: 0K->0K(18432K), 0.0106663 secs]0.466: [CMS (concurrent mode failure): 15833K->15833K(30720K), 0.0027827 secs] 15833K->15833K(49152K), [Metaspace: 2800K->2800K(1056768K)], 0.0135464 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
2017-09-07T18:18:21.656-0800: 0.469: [Full GC (Allocation Failure) 0.469: [CMS: 15833K->15822K(30720K), 0.0022095 secs] 15833K->15822K(49152K), [Metaspace: 2800K->2800K(1056768K)], 0.0022507 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
Heap
 par new generation   total 18432K, used 814K [0x00000007bce00000, 0x00000007be200000, 0x00000007be200000)
  eden space 16384K,   4% used [0x00000007bce00000, 0x00000007bcecbb38, 0x00000007bde00000)
  from space 2048K,   0% used [0x00000007bde00000, 0x00000007bde00000, 0x00000007be000000)
  to   space 2048K,   0% used [0x00000007be000000, 0x00000007be000000, 0x00000007be200000)
 concurrent mark-sweep generation total 30720K, used 15822K [0x00000007be200000, 0x00000007c0000000, 0x00000007c0000000)
 Metaspace       used 2831K, capacity 4486K, committed 4864K, reserved 1056768K
  class space    used 306K, capacity 386K, committed 512K, reserved 1048576K

 

G1 Garbage Collector 日志

➜  logs tail -f -n 1000 test_gc_pid7134.log
Java HotSpot(TM) 64-Bit Server VM (25.51-b03) for bsd-amd64 JRE (1.8.0_51-b16), built on Jun  8 2015 18:01:11 by "java_re" with gcc 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)
Memory: 4k page, physical 8388608k(108100k free)

/proc/meminfo:

CommandLine flags: -XX:InitialHeapSize=52428800 -XX:MaxHeapSize=52428800 -XX:MaxNewSize=20971520 -XX:NewSize=20971520 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:SurvivorRatio=8 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseG1GC
2017-09-07T18:22:29.539-0800: 0.391: [Full GC (System.gc())  16M->15M(50M), 0.0049631 secs]
   [Eden: 2048.0K(20.0M)->0.0B(20.0M) Survivors: 0.0B->0.0B Heap: 16.4M(50.0M)->15.5M(50.0M)], [Metaspace: 2802K->2802K(1056768K)]
 [Times: user=0.01 sys=0.00, real=0.01 secs]
2017-09-07T18:22:29.544-0800: 0.396: [GC pause (G1 Humongous Allocation) (young) (initial-mark), 0.0005158 secs]
   [Parallel Time: 0.2 ms, GC Workers: 4]
      [GC Worker Start (ms): Min: 395.8, Avg: 395.8, Max: 395.8, Diff: 0.0]
      [Ext Root Scanning (ms): Min: 0.1, Avg: 0.1, Max: 0.2, Diff: 0.0, Sum: 0.5]
      [Update RS (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
         [Processed Buffers: Min: 0, Avg: 0.0, Max: 0, Diff: 0, Sum: 0]
      [Scan RS (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
      [Code Root Scanning (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
      [Object Copy (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
      [Termination (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
      [GC Worker Other (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
      [GC Worker Total (ms): Min: 0.1, Avg: 0.2, Max: 0.2, Diff: 0.0, Sum: 0.6]
      [GC Worker End (ms): Min: 396.0, Avg: 396.0, Max: 396.0, Diff: 0.0]
   [Code Root Fixup: 0.0 ms]
   [Code Root Purge: 0.0 ms]
   [Clear CT: 0.0 ms]
   [Other: 0.3 ms]
      [Choose CSet: 0.0 ms]
      [Ref Proc: 0.2 ms]
      [Ref Enq: 0.0 ms]
      [Redirty Cards: 0.0 ms]
      [Humongous Reclaim: 0.0 ms]
      [Free CSet: 0.0 ms]
   [Eden: 0.0B(20.0M)->0.0B(20.0M) Survivors: 0.0B->0.0B Heap: 15.5M(50.0M)->15.5M(50.0M)]
 [Times: user=0.00 sys=0.00, real=0.00 secs]
2017-09-07T18:22:29.545-0800: 0.396: [GC concurrent-root-region-scan-start]
2017-09-07T18:22:29.545-0800: 0.396: [GC concurrent-root-region-scan-end, 0.0000162 secs]
2017-09-07T18:22:29.545-0800: 0.396: [GC concurrent-mark-start]
2017-09-07T18:22:29.545-0800: 0.396: [GC pause (G1 Humongous Allocation) (young), 0.0007350 secs]
   [Parallel Time: 0.3 ms, GC Workers: 4]
      [GC Worker Start (ms): Min: 396.5, Avg: 396.6, Max: 396.8, Diff: 0.3]
      [Ext Root Scanning (ms): Min: 0.0, Avg: 0.1, Max: 0.2, Diff: 0.2, Sum: 0.5]
      [SATB Filtering (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
      [Update RS (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
         [Processed Buffers: Min: 0, Avg: 0.2, Max: 1, Diff: 1, Sum: 1]
      [Scan RS (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
      [Code Root Scanning (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
      [Object Copy (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
      [Termination (ms): Min: 0.0, Avg: 0.1, Max: 0.1, Diff: 0.1, Sum: 0.3]
      [GC Worker Other (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
      [GC Worker Total (ms): Min: 0.0, Avg: 0.2, Max: 0.3, Diff: 0.3, Sum: 0.8]
      [GC Worker End (ms): Min: 396.8, Avg: 396.8, Max: 396.8, Diff: 0.0]
   [Code Root Fixup: 0.0 ms]
   [Code Root Purge: 0.0 ms]
   [Clear CT: 0.1 ms]
   [Other: 0.3 ms]
      [Choose CSet: 0.0 ms]
      [Ref Proc: 0.1 ms]
      [Ref Enq: 0.0 ms]
      [Redirty Cards: 0.1 ms]
      [Humongous Reclaim: 0.0 ms]
      [Free CSet: 0.0 ms]
   [Eden: 0.0B(20.0M)->0.0B(20.0M) Survivors: 0.0B->0.0B Heap: 15.5M(50.0M)->15.5M(50.0M)]
 [Times: user=0.00 sys=0.00, real=0.00 secs]
2017-09-07T18:22:29.546-0800: 0.397: [Full GC (Allocation Failure)  15M->15M(50M), 0.0040735 secs]
   [Eden: 0.0B(20.0M)->0.0B(20.0M) Survivors: 0.0B->0.0B Heap: 15.5M(50.0M)->15.5M(50.0M)], [Metaspace: 2802K->2802K(1056768K)]
 [Times: user=0.00 sys=0.00, real=0.01 secs]
2017-09-07T18:22:29.550-0800: 0.402: [Full GC (Allocation Failure)  15M->15M(50M), 0.0045375 secs]
   [Eden: 0.0B(20.0M)->0.0B(20.0M) Survivors: 0.0B->0.0B Heap: 15.5M(50.0M)->15.4M(50.0M)], [Metaspace: 2802K->2802K(1056768K)]
 [Times: user=0.01 sys=0.00, real=0.00 secs]
2017-09-07T18:22:29.555-0800: 0.406: [GC concurrent-mark-abort]
Heap
 garbage-first heap   total 51200K, used 15820K [0x00000007bce00000, 0x00000007bcf00190, 0x00000007c0000000)
  region size 1024K, 1 young (1024K), 0 survivors (0K)
 Metaspace       used 2833K, capacity 4486K, committed 4864K, reserved 1056768K
  class space    used 306K, capacity 386K, committed 512K, reserved 1048576K

 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 216
博文 605
码字总数 432157
×
秋风醉了
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: