JVM-(8)JVM启动的常用命令以及参数

JVM常见启动参数 在本文中,我们学习了一些重要的JVM参数,这些参数可以用来调整和改善一般应用程序的性能。我们也可以将其中一些用于调试目的。 阅读详情

JVM启动的常用命令以及参数

在上文 JVM 堆内存逻辑分区 中已经使用过一些 jvm 启动命令,本文着重讲述JVM启动命令用法以及一些常用的参数

一. 基本命令格式

java [options] classname [args...]
java [options] -jar filename.jar [args...]

① [options] - 命令行选项(可选)

比如标准参数 -version ,非标准参数 -Xms,非稳定参数 -XX:+PrintGCDetails,下面有详细说明

② classname - 要执行的类(必需)

指定包含 main 方法的类的全限定名:

java com.example.MyApp

③ [args…] - 传递给 main 方法的参数(可选)

这些参数会传递给应用程序的 main 方法的 String[] args 参数:

java MyApp arg1 arg2 arg3

④ 完整示例

# 复杂的实际应用示例
java \
  -Xms1g -Xmx4g \                  # 堆内存设置
  -XX:+UseG1GC \                   # 使用 G1 垃圾收集器
  -XX:MaxGCPauseMillis=200 \       # 最大 GC 暂停时间
  -Dspring.profiles.active=prod \  # Spring 环境配置
  -Dlog4j.configurationFile=conf/log4j2.xml \  # 日志配置
  -cp "lib/*:app.jar:config" \     # 类路径设置
  com.example.MainApplication \    # 主类
  --server.port=8080 \             # 应用参数
  --database.url=jdbc:mysql://localhost:3306/mydb

二. JVM 启动常用命令参数分类

JVM 常用命令参数主要分为三类:

  1. 标准参数
    以 - 开头,是所有 JVM 实现必须支持的参数,例如:
    -version:显示版本信息
    -help:显示所有标准参数列表
  2. 非标准参数
    以 -X 开头,默认支持但可能不保证所有 JVM 实现兼容,例如:
    -Xms:设置初始堆内存(如 -Xms512m) ‌
    -Xmx:设置最大堆内存(如 -Xmx2g) ‌
    -Xmn:设置新生代大小(如 -Xmn2g)
  3. 非稳定参数
    以 -XX 开头,可能随版本变更而取消,需谨慎使用,例如:
    -XX:MetaspaceSize:设置元空间初始大小
    -XX:+PrintGCDetails:输出详细 GC 日志 ‌

三. 常用命令举例

非稳定参数举例

① java -XX:+PrintCommandLineFlags

主要作用是:在 JVM 启动时,打印出那些被显式设置或由 JVM 自动设置的关键 -XX 参数及其值。

java -XX:+PrintCommandLineFlags -version

C:\Users\Administrator>java -XX:+PrintCommandLineFlags -version
-XX:InitialHeapSize=267006528 -XX:MaxHeapSize=4272104448 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

解读:

  • -XX:InitialHeapSize=267006528 ,JVM 根据当前机器的内存,自动设置的初始堆大小约为 255 MB。
  • -XX:MaxHeapSize=4272104448 ,JVM 自动设置的最大堆大小约为 4 GB。(大概是电脑内存的 1/4)
  • -XX:+PrintCommandLineFlags ,我们自己设置的参数也被打印出来了
  • -XX:+UseCompressedClassPointers -XX:+UseCompressedOops,JVM 自动启用了压缩指针(64位系统上的优化,节省内存)。
  • -XX:-UseLargePagesIndividualAllocation
  • -XX:+UseParallelGC,JVM 自动选择了并行垃圾收集器(Parallel GC)作为默认收集器。(这在JDK 8及之前是默认行为,高版本JDK默认可能是G1)

由上述 jvm 指令格式可知 classname 是必须参数,但是我们不需要运行某个类,只需要查看参数设置,那么添加 -version 参数可以告诉 JVM 不要尝试执行任何应用程序,只需显示版本信息然后退出
如果不加上 -version 会报如下错:

② java -XX:+PrintFlagsInitial

查看所有不稳定指令的默认值

③ java -XX:+PrintFlagsFinal

查看所有不稳定指令最终生效的实际值

④ 打印GC日志

命令如下:

java -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:gc.log -jar yourapp.jar
  • -XX:+PrintGC (或 -verbose:gc):表示开启简要 GC 日志。
  • -XX:+PrintGCDetails:(强烈建议加上) 打印详细的 GC 信息,包括各区(Eden, Survivor, Old)在 GC 前后的内存使用情况。没有这个参数,日志信息会非常有限。
  • -XX:+PrintGCDateStamps 或 -XX:+PrintGCTimeStamps:
    • -XX:+PrintGCDateStamps:在日志中添加日期时间戳(如 2024-05-27T10:00:00.123+0800)。
    • -XX:+PrintGCTimeStamps:在日志中添加从 JVM 启动开始计算的相对时间戳(如 12.345 秒)。生产环境推荐使用 PrintGCDateStamps。
  • -Xloggc:<file_path>:(强烈建议加上) 将 GC 日志输出到文件,而不是控制台。例如 -Xloggc:/logs/gc.log。

增加高级设置

java -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCCause -XX:+PrintTenuringDistribution -Xloggc:gc.log -jar yourapp.jar
  • -XX:+PrintGCCause:打印触发 GC 的原因(如 Allocation Failure, System.gc() 等)。这在 JDK 8 之后通常是默认开启的。
  • -XX:+PrintTenuringDistribution:打印晋升年龄阈值(对象在 Survivor 区熬过多少次 GC 才能进入老年代)的信息,对调优 Survivor 区大小非常有帮助。
  • -XX:+PrintHeapAtGC:在每次 GC 前后打印堆的详细信息。非常详细,但日志量会急剧增大,主要用于深度调试。
  • -XX:+PrintReferenceGC:打印处理各种引用(软引用、弱引用、虚引用、Finalizer)的耗时。

常见组合

java -Xloggc:D:/test/dump/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=10M

1) -Xloggc:D:/test/dump/gc.log

  • 作用: 这是指定GC日志文件输出路径和基础文件名的核心参数。
  • 解释:JVM会将GC日志写入到指定的文件中。这里的路径是 D:/test/dump/gc.log。

2) -XX:+PrintGCDetails

  • 作用:开启详细的GC日志输出。这是最重要的参数,没有它,日志只会非常简略。
  • 解释:加上这个参数后,GC日志会包含每一次GC(Young GC和Full GC)的详细信息,例如:
    • GC类型(YoungGC, Full GC)
    • GC前/后各个内存区域(Eden, Survivor, Old, Metaspace)的使用容量和总容量
    • 本次GC的耗时(以秒为单位)

3)-XX:+PrintGCDateStamps

  • 作用:在每行GC日志前加上一个日期时间戳。
  • 解释:这对于问题排查至关重要。它让你能清楚地知道每一次GC发生的具体绝对时间(例如 2024-05-27T10:23:45.123+0800),方便你将GC事件与当时的业务监控(如CPU飙升、请求量激增)进行关联分析。

4)-XX:+UseGCLogFileRotation

  • 作用:启用GC日志文件轮转(滚动)。
  • 解释:如果不启用这个参数,所有的GC日志都会写入一个文件中(即 gc.log),这个文件会越来越大,最终可能占满磁盘空间。启用后,JVM会在满足条件时自动创建新的日志文件,实现轮转。

5)-XX:NumberOfGCLogFiles=5

  • 作用:指定最多保留多少个轮转的GC日志文件。必须和 -XX:+UseGCLogFileRotation 一起使用。
  • 解释:这里设置为 5,意味着JVM会最多保留5个历史GC日志文件,加上当前正在写入的,总共最多6个文件。当轮转文件数超过5个时,最老的那个文件会被自动删除。

6)-XX:GCLogFileSize=10M

  • 作用:指定每个GC日志文件的最大大小。必须和 -XX:+UseGCLogFileRotation 一起使用。
  • 解释:这里设置为 10M。当当前正在写入的 gc.log 文件大小达到10MB时,JVM会将其重命名(如重命名为 gc.log.0),然后创建一个新的 gc.log 文件来继续写入。之前的文件会依次向后轮转。

GC 日志生成效果:

GC 日志结果:

日志解释:

  • [Full GC (System.gc()) [PSYoungGen: 5297K->0K(22528K)] :使用的是Parallel Scavenge收集器。表示发生了FullGC,GC前年轻代使用了5297KB,GC后年轻代使用量变为0KB(所有存活对象都被移走)。(22528K): 年轻代的总容量为22528KB(约22MB)。
  • [ParOldGen: 62424K->64140K(68608K)]:老年代 (Old Generation) 的回收情况,使用的是Parallel Old收集器。62424K->64140K: 严重问题所在! GC前老年代使用了62424KB,GC后竟然变成了64140KB。使用量不降反增了!(68608K): 老年代的总容量为68608KB(约67MB)。计算使用率:64140K / 68608K ≈ 93.5%。
  • 67722K->64140K(91136K):整个堆 (Heap) 的回收情况。67722K->64140K: GC前整个堆使用了67722KB,GC后变为64140KB。回收了约3.5MB,但正如上述老年代所示,这很可能是年轻代清空带来的,老年代反而增长了。(91136K): 整个堆的总容量为91136KB(约89MB)。YoungGen(22MB) + OldGen(67MB) ≈ 89MB。
  • [Metaspace: 37670K->37670K(1085440K)]:元空间 (Metaspace) 的回收情况。37670K->37670K: 使用量前后无变化。(1085440K): 元空间的最大容量约为1GB。元空间使用正常且稳定,没有问题。
  • 0.0273593 secs:这次Full GC所花费的总时间(27.3毫秒)。

⑤ 设置堆内存溢出时自动生成Dump文件

Dump 文件(转储文件)是计算机程序在特定时间点的状态快照,它记录了程序在发生错误、崩溃或特定触发条件时的内存内容、执行状态和系统信息,开发人员可以根据Dump文件事后分析到底发生了什么问题。
命令示例:

java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump.hprof -Xmx512m -jar yourapp.jar
  • -XX:+HeapDumpOnOutOfMemoryError:启用堆内存溢出时自动生成 dump 文件的功能
  • -XX:HeapDumpPath= :指定 dump 文件的保存路径和文件名,可以指定文件名,也可以只指定目录,当只指定目录时,JVM 会自动生成文件名,格式为:java_pid.hprof
JVM启动参数配置详解 java基础 JVM启动参数配置JDK8的JVM启动参数默认配置如下:JDK8的JVM启动参数说明如下: JDK8的JVM启动参数默认配置如下: -Xms2g -Xmx2g (按不同容器,4G及以下建议为50%,6G以上,建议设置为70%) -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -Xss256k -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:AutoBoxCacheMax=20000 -XX:+HeapDum 阅读详情

相关推荐

JVM(Java虚拟机)启动参数

总结来说,JVM启动参数是在启动Java应用程序时传递给JVM的命令行参数,用于配置JVM的行为和性能参数。JVM(Java虚拟机)启动参数是在启动Java应用程序时传递给JVM的命令行参数,用于配置JVM的行为和性能参数。本文将介绍常见的JVM启动参数,包括堆大小、GC策略、类路径等,并给出相应的代码示例和应用场景。例如,-XX:PermSize=256m -XX:MaxPermSize=512m表示将永久代的初始大小设置为256MB,最大大小设置为512MB。-Xmx:设置JVM堆的最大内存大小。

m0_65890371的博客 2675

JVM之启动参数

JVM的启动参数JVM启动参数格式种类以 - 开头以-D开头以 -X 开头以 –XX:开头设置当前Java进程的启动参数JVM启动参数功能分类系统属性参数运行模式参数堆内存设置参数设置堆内设置非堆设置堆外GC 设置参数分析诊断参数JavaAgent 参数 JVM启动参数格式种类 以 - 开头 以 - 开头为标准参数,所有的 JVM 都要实现这些参数,并且向后兼容 例如:-server 以-D开头 -D 设置系统属性 例如:-Dfile.encoding=UTF-8 以 -X 开头 以 -X 开头为

animatelife的博客 2485

VisionPro脚本实战:用C#替代QuickBuild,让复杂定位项目代码更清爽

本文探讨了如何通过C#脚本重构VisionPro复杂定位项目,替代臃肿的QuickBuild架构。通过实战案例展示了脚本化开发如何减少60%代码量并提升35%运行效率,使项目更易维护。文章详细介绍了环境搭建、多模板定位重构及高级技巧,帮助开发者突破QuickBuild限制,实现更高效的视觉应用开发。

weixin_30417487的博客 501

【JVM】JVM启动参数

JVM启动参数概述 以 - 开头为标准参数,所有的 JVM 都要实现这些参数,并且向后兼容。 -D 设置系统属性。 以 -X 开头为非标准参数, 基本都是传给 JVM 的,默认 JVM 实现这些参数的功能,但是并不保证所有 JVM 实现都满足,且不保证向后兼容。 可以使用 java -X 命令来查看当前JVM 支持的非标准参数。 以 –XX:开头为非稳定参数, 专门用于控制 JVM的行为,跟具体的 JVM 实现有关,随时可能会在下个版本取消。 -XX:±Flags 形式, ± 是对布尔值进行开关。 -XX

u010243531的博客 599

Vivado加上VsCode让你的生活更美好

VsCode与Vivado的灵活使用 引言 ​ 现在大二了,在接触硬件描述语言。Vivado自带的编辑器实在很难用,为了能够“极客”一些,当然是去Google了一下有哪些方法可以取而代之。 ​ 网络上的答案大同小异,基本上都是用的Sublime Text.(我的学长们也几乎都是) 平时码代码的过程中,我习惯与使用VsCode,尤其是在微软收购GitHub之后,Code 简直就是神器了。于是乎…一个...

qq_39498701的博客 10万+

从CD4051到现代模拟开关:40年芯片演进史与选型避坑指南

本文回顾了从CD4051到现代模拟开关的40年技术演进,详细对比了导通电阻、带宽等关键参数的显著提升。通过实际案例和选型矩阵,揭示现代模拟开关在精度、功耗和集成度方面的优势,并提供高精度测量、电池供电等场景的选型策略与避坑指南,帮助工程师优化设计。

weixin_42543046的博客 153

JVM常用启动参数

目录JVM常用启动参数系统属性参数运行模式参数堆内存设置参数显式指定堆内存`–Xms`和`-Xmx`显式新生代内存显示指定永久代/元空间的大小其他常用参数GC设置参数垃圾回收器GC记录分析诊断参数JavaAgent参数 文章放置于:https://github.com/zgkaii/CS-Study-Notes,欢迎批评指正! JVM常用启动参数 JVM启动参数的前缀主要有-、-D、-X、-XX、+/-、: 以-开头为标准参数,所以的JVM都要实现这些参数,并且向后兼容。例如-server。 -D

Stay Hungry, Stay Foolish! 5612

自动驾驶仿真:python和carsim联合仿真案例

carsim内部有许多相关联合仿真的demo,simulink、labview等等都有涉及,这里简单介绍下python和carsim联合仿真的方法,虽然carsim官方有个Steer_Control.py相关的案例,但是感觉比较冗余,这里抽出重点部分和大家交流探讨下。提示:以下是本篇文章正文内容,下面案例可供参考1、这里关于solvers的细节其实都没说,因为里面确实也没什么内容好讲的,本质就是调用carsim.dll,如果你需要更多的函数解析其实可以看vs_api.h,路径在,具体内容如下图所示。

zataji的博客 9059

JVM 启动参数

JVM 启动参数 一.几类不同开头的参数 1. 以 - 开头为标准参数,所有的 JVM 都要实现这些参数,并且向后兼容,如 -server。 2. -D 设置系统属性,如 -Dfile.encoding=UTF-8。 3. 以 -X 开头为非标准参数,基本都是传给 JVM 的,默认 JVM 实现这些参数的功能,但是并不保证所有 JVM 实现都满足,且不保证向后兼容。 可以使用 java -X 命令来查看当前 JVM 支持的非标准参数,如 -Xmx8g。 4. 以 –XX:开头为非稳定参数, 专门用于控制

纯洁的小魔鬼 8339

YOLOv8改进 | 主干篇 | 轻量级的低照度图像增强网络IAT改进YOLOv8暗光检测(全网独家首发)

本文给大家带来的改进机制是轻量级的变换器模型:Illumination Adaptive Transformer (IAT),用于图像增强和曝光校正。其基本原理是通过分解图像信号处理器(ISP)管道到局部和全局图像组件,从而恢复在低光或过/欠曝光条件下的正常光照sRGB图像。具体来说,IAT使用注意力查询来表示和调整ISP相关参数,例如颜色校正、伽马校正。模型具有约90k参数和约0.004s的处理速度,能够在低光增强和曝光校正的基准数据集上持续实现优于最新技术(State-of-The-Art, SOTA)

Snu77的博客 7949

解决Qt字体问题:QFontDatabase: Cannot find font directory xx/lib/fonts

1.直接在main函数里设置app的整体字体库.这个错误提示比较明显的就是字体库缺失。

有问题或资源连接有缺失的可以私信公众号新潮看世界获取 3041

Java JVM启动参数

摘要 已经使用了一段时间的Java,期间也了解和用过一些JVM(Java Virtual Machine)参数,但是没有仔细去整理过每个参数代表的意义,为此整理成文。 Java使用方式 java [options] classname [args] java [options] -jar filename [args] options: 命令行选项,空格分隔 classname: 启...

学而不厌 诲人不倦 2万+

Qt | QPalette 类(调色版)

Qt | QPalette 类(调色版)

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 774

JVM启动参数及常用命令

1.启动参数 Java启动参数共分为三类; 其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容; 其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容; 其三是非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用; 标准参数(-) JVM的标准参数都是以”-“开头,通过输...

misxu890312的博客 1151

【知识分享】高速印刷电路板(PCB)寄生参数计算指南

对于高速PCB设计而言,寄生参数一直是令人讨厌的问题,它们会悄悄潜入PCB并在电路中造成严重的破坏,具体来说,它们是渗透到高速电路中的隐藏杂散电容器和电感器,包括由封装引线和长走线形成的电感器、PCB焊盘对金属平面形成的电容器、走线之间形成的电容器等等。

一只豌豆象的博客 1776

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

JVM 启动参数详解

JVM 启动参数详解 JVM 作为一个通用的虚拟机,我们可以通过启动Java命令时指定不同JVM参数,让 JVM调整自己的运行状态和行为,内存管理和垃圾回收的GC算法等等。 直接通过命令行启动 Java程序的格式为: java [options] classname [args] java [options] -jar filename [args] 其中[options] 部分称为 “JVM 选项”,对应IDE中的 VM options,可用jps -v 查看。 [args] 部分是指 “传递给ma

wkx__1003的博客 5528

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

JVM —— 启动参数

文章目录JVM —— 运行参数4个内存参数查看设置JVM内存信息3个标准启动参数常用的标准参数非标准参数(扩展参数)XX的使用启动参数的疑问行为参数关于垃圾收集器串行收集器并行收集器(吞吐量优先)并发收集器(响应时间优先)性能调优参数调试参数 JVM —— 运行参数 4个内存参数 -Xmx Java Heap最大值,默认值为物理内存的1/4,最佳值应该视物理内存大小及计算机内其它内存开销而定; ......

Genius only means hard-working all one's life. 1535

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

常用的JVM启动参数有哪些?

常用的JVM启动参数有哪些?

java1234的博客 908

IDEA中如何设置JVM启动参数

调整 IDEA 运行时的内存(如解决 IDE 卡顿)。:为应用程序的主类或测试配置运行时 JVM 参数(如。:部分版本可通过界面修改(

z17826856787的博客 1万+

jvm之启动参数

class文件格式:jar包格式:其中[options]就是我们本文要分析的jvm的参数配置,[args]是main函数的参数即main(String[] arags)中的args参数具体可以分为标准参数,非标准参数,系统属性参数等,分别来看下。标准参数标准参数是以开头的参数,这种参数是所有的JVM都会实现和支持的,并且会一直兼容,如-server 设置jvm的运行模式。系统属性参数系统属性参数通过-D设置,如-Dfile.encoding=UTF-8,设置编码。非标准参数。

wang0907的博客 4384

常用的JVM启动参数

JVM启动参数是调整JVM性能、内存管理、垃圾回收等行为的重要工具。根据应用的需求,我们可以灵活地配置JVM启动参数,优化应用的运行性能。在实际的开发和生产环境中,了解常用的JVM启动参数,并根据实际情况进行合理的配置,能够有效提升系统的吞吐量、响应速度和稳定性。

tangjieqing的博客 913

Java8 JVM参数解读

我们知道java虚拟机启动时会带有很多的启动参数,Java命令本身就是一个多参数的启动命令。那么具体JVM启动包含哪些参数呢?这篇文章针对java8的情况做一篇汇总解读,包含大多数常见和不常见的命令参数,过于小众的就不写了。 命令参数包含 标准参数(Standard Option) 非标准参数(Non-Standard Options) 高级运行时参数(Advanced Runtime Options) 高级JIT编译器参数(Advanced JIT Compiler Options) 高级服务

攻城狮不是猫 2454

常用的JVM启动参数有哪些?

常用的JVM启动参数有哪些?

java1234的博客 1010

java -jar 设置jvm参数_java8 常用JVM 参数修改

参考:https://www.cnblogs.com/jpfss/p/9753215.html推荐阅读:总结:百万连接,百亿吞吐量服务的JVM性能调优实战 >>https://my.oschina.net/LucasZhu/blog/2056232最后,对于长连接,push一类的海量服务端应用,16G内存8核心,推荐的JVM参数如下 jdk 1.7 14g->13g-Xm...

weixin_35351343的博客 4903

十、JVM常用启动参数

一、JVM启动参数共分为三类: 1.其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容; 2.其二是非标准参数(-X),指的是JVM底层的一些配置参数,这些参数在一般开发中默认即可,不需要任何配置。但是在生产环境中,并不保证所有JVM实现都满足,所以为了提高性能,往往需要调整这些参数,以求系统达到最佳性能。另外这些参数不保证向后兼容,也即是说"如有变更,恕不在后续版本的JDK通知"(官网) 3.其三是非Stable参数(-XX),这类参数在JVM中是不稳定的,不适合日常使用的,后续

李白 3900
上一篇: JVM-(7)堆内存逻辑分区
下一篇: JVM-(9)JVM诊断的常用命令以及参数
sql2008help
博客等级 码龄11年 80粉丝 145原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值