1. 概述
  1. 简单介绍一下 java 命令行相关的参数及属性

1. java 命令行

  1. 基本
  1. 命令
> java <mainClass>
  1. 描述
  1. 执行 Java 类
  2. 需要准备好编译完成的 mainClass
  1. 然后
  1. 命令
> java -X<options> -XX<options> -D<properties> <mainClass> [arg0] [arg1]...
  1. 怎么感觉, 东西一下多了好多, 有点懵逼了
  1. 没事, 慢慢来
  1. 这些东西, 大概分这么几块
  1. 选项
  2. 属性
  3. 参数

2. 选项

  1. 概述
  1. 选项主要的目的, 是对 JVM 做一些调整
  1. 分类
  1. 标注选项
  1. 通用
  1. 所有版本的 JVM 都要实现的选项
  1. 例如
-version
-server
-client
  1. 其他
  1. 我们后面说的 -D, 其实也包含在其中
  1. 这个我想单独说
  1. 具体的例子, 就不一一例举了
  1. 拓展选项
  1. 拓展
  1. hotspot 会实现
  2. 其他 JVM 未必实现
  1. 例如
# 最大堆内存
-Xmx3800m	
# 初始堆内存
-Xms3800m	
# 新生代内存
-Xmn2g		
# (每个线程)栈内存大小
-Xss128k
  1. 其他
  1. 常见参数就是这些
  1. 不细讲了
  1. 数值单位
  1. 可以自己定, 比较灵活
  1. 重合
  1. 拓展选项和高级选型, 会有部分的重合
  1. 这个不细说了(就是懒)
  1. 高级选项
  1. 开发者选项
  1. 相对高级
  2. 不保证所有 JVM 都有支持
  1. 分类
  1. 高级运行时
  1. 配置 JVM
  1. 高级维护性
  1. 调试
  2. 收集系统信息
  1. 高级GC
  1. 选择 GC
  2. 控制 GC 行为
  1. 高级JIT
  1. 控制 JIT 的编译方式
  1. 即时编译的那个东西
  1. 例如
# 同 -Xmx
-XX:MaxHeapSize=size
# 同 -Xms
-XX:InitialHeapSize=size
# 日志
-XX:LogFile=path
  1. ref
  1. java的-D命令行参数
  1. 把命令行选项, 归为了 命令行参数
  2. 只看 Java 启动参数 那一小块
  1. 虽然说得不完全, 但是简单清晰, 有个直观的认识
  1. java命令行介绍
  1. 讲得很清晰
  1. Java -X命令
  2. ibm java options
  3. java JVM 参数 -Xms -Xmx -Xmn -Xss 调优总结
  4. ibm java options
  5. JVM调优总结

3. 属性

  1. 概述
  1. 配置 环境变量
  2. 其实也是 java 标准选项的一部分
  1. 命令
# 如果 value 带空格, 需要 "" 引起来
> java -D<key>=<value> <mainClass>
  1. 查看
  1. 代码
# 1. 获取 property
# 值 是 String
System.getProperty("<key>")

# 2. 设置 property
System.setProperty("<key>", "<value>")

# 3. 输出所有属性
# 略
  1. ref
  1. java程序启动参数-D详解
  2. Java System Properties
  3. Oracle Doc
  4. 输出所有属性
  5. 常用系统属性

4. 参数

  1. 概述
  1. 剩下的就是参数了
  1. 命令
> java <mainClass> [arg0] [arg1]...
  1. 查看
  1. main 方法的参数 args[] 就是输入的参数
  1. String 类型字符串
  2. 第一个参数下标为 0
  3. 如果碰到带空格的整体, 可以用 "" 连接
  1. ref
  1. 官方文档

尽量尝试解释清楚; 自己校对能力有限, 如果有错误欢迎指出