麦克斯仇
Think different
160
文章
42172
阅读
首页
INDEX
文章
ARTICLE
关于
ABOUT
Java启动参数(基础篇)
创建日期:
2022/03/13
修改日期:
2023/05/31
Java
> 官方文档: - `Java8 - Linux`:[https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html](https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html) - `Java8 - Windows`:[https://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html](https://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html) - `Java11`:[https://docs.oracle.com/en/java/javase/11/tools/java.html](https://docs.oracle.com/en/java/javase/11/tools/java.html) 下文以 `1.8.0_201` 为例 # 基本格式 执行 `java -help` 可以查看到基本格式以及选项 ```bash [root@localhost ~]# java -help 用法: java [-options] class [args...] (执行类) 或 java [-options] -jar jarfile [args...] (执行 jar 文件) 启动选项略 ``` - `[-options]`:选项 - `[args...]`:给 `main` 方法传参 # options 选项详解 ## 标准选项 1. `-help / -?`:输出帮助信息 2. `-version`:输出版本信息 3. `-classpath / -cp`:目录和 `zip/jar` 文件的类搜索路径 4. `...` 其他不常用参数 ## 非标准的选项( `X` 参数) ### 编译模式选项: - `-Xint`:仅解释模式执行 - `-Xcomp`:与`-Xint`相反,第一次使用就完全编译 - `-Xmixed`:(默认)混合模式 JVM三种运行模式示例:  ### 高级选项( `XX` 参数)的简写选项 - `-Xms`:设置堆的最小大小和初始大小。该参数等于 `-XX:InitialHeapSize` - `-Xmx`:设置堆的最大大小,`-Xms` 通常设置为 `-Xmx` 相同的值。该参数等于 `-XX:MaxHeapSize` - `-Xmn`:设置年轻代堆的初始大小和最大大小。该参数等于同时设置`-XX:NewSize`和`-XX:MaxNewSize` - `-Xss`:设置单个线程堆栈大小,一般为 `512k ~ 1024k`。该参数等于同 `-XX:ThreadStackSize`。默认值如下:(取决于平台)。 - Linux/ARM (32-bit): 320 KB - Linux/i386 (32-bit): 320 KB - Linux/x64 (64-bit): 1024 KB - OS X (64-bit): 1024 KB - Oracle Solaris/i386 (32-bit): 320 KB - Oracle Solaris/x64 (64-bit): 1024 KB - Windows: 决定于虚拟内存 ## 高级选项(`XX`参数) ### 分类方式 按照官方的分类,有如下四种 1. 高级运行时选项 2. 高级JIT编译器选项 3. 先进的可维修选项 4. 高级垃圾收集选项 按照设置参数的方式分类,有如下两种 1. `Boolean` 类型: - `-XX:+` 表示开启 - `-XX:-` 表示关闭 2. `KV` 设值类型:`-XX:Key=Value` - 容量型(后缀不可以加 `B`) - `k` 或 `K` 表示 `KB` - `m` 或 `M` 表示 `MB` - `g` 或 `G` 表示 `GB` - 数字无单位表示 `B` - 数字型 - 大小 - 比例 ### 常用设置 - `-XX:+PrintCommandLineFlags`:启用打印命令行上JVM配置,比如堆空间大小和所选的垃圾收集器。默认禁用。 - `-XX:MetaspaceSize=size`:设置元数据空间的大小,当第一次超过该空间时将触发垃圾收集。垃圾收集的这个阈值根据使用的元数据量增加或减少。默认大小取决于平台。 - `-XX:MaxMetaspaceSize=size`:设置元数据的本机内存的最大数量。缺省情况下,不限制大小。应用程序的元数据量取决于应用程序本身、其他正在运行的应用程序以及系统中可用的内存量。 - `-XX:SurvivorRatio=ratio`:设置 `Eden` 空间大小和 `Survivor` 空间大小之间的比率。默认值为8,即 `Eden:S0:S1` = 8:1:1 # 实战  - `-Xms -Xmx`:通常设置为相同值。 - `-Xmn`:年轻代堆区域用于新对象。与其他区域相比,此区域执行 `GC` 的频率更高。如果年轻代的太小,那么将频繁执行 `Young GC` 。如果太大,则只执行 `Full GC` ,这可能需要很长时间才能完成。`Oracle` 建议将年轻代堆大小保持在总体堆大小的一半到四分之一之间。 - `-Xss`:一般设置为`1M` - `-XX:+PrintCommandLineFlags`:建议启用 - `-XX:MetaspaceSize=size -XX:MaxMetaspaceSize=size`:一般 `256M` 够用 - `-XX:SurvivorRatio=ratio`:默认值为8,推荐加上。 > 低配机 ```bash java -XX:+PrintCommandLineFlags -Xms128M -Xmx128M -Xmn64M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:SurvivorRatio=8 -jar web.jar ``` > 普通机 ```bash java -XX:+PrintCommandLineFlags -Xms1G -Xmx1G -Xmn512M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:SurvivorRatio=8 -jar web.jar ``` # GC 相关配置 [Java启动参数(垃圾回收篇)](https://maxqiu.com/article/detail/131)
21
全部评论