【原创】JVM系列06 | 如何设置虚拟机参数

收录于话题
#进阶架构师 | JVM调优专题
9个

点击上方“java进阶架构师”,选择右上角“置顶公众号” 20大进阶架构专题每日送达 本文是何适 JVM 修仙系列第 6 篇,文末有本系列文章汇总。 从今天开始进入虚拟机参数部分的学习,通过学习虚拟机参数,设置虚拟机参数,配置和跟踪虚拟机,达到故障排查和性能优化的目的。

1. 执行 Java 程序的三种方法


执行 Java 程序的方法: 开发工具执行 Java 代码 java -jar 命令执行 jar 包 java -cp 命令执行 jar 包 接下来,以如下代码为例设置参数:

public class ArgsTest {
    public static void main(String[] args) {
        // args参数
        for (int i = 0; i < args.length; i++) {
            System.out.println("第" + i + "个参数:" + args[i]);
        }
        // 系统可用最大堆内存
        System.out.println(" 系统可用最大堆内存:-Xmx" + Runtime.getRuntime().maxMemory() / 1000 / 1000 + "M");
    }
}

2. 开发工具设置参数


Eclipse 开发工具设置启动参数,如下图:run configurations --> Arguments --> VM Arguments

3. java -jar


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

-options表示虚拟机参数,如-Xmx32m
.jar 表示jar包路径
args表示main方法的参数
不需要设置main方法的类,因为MANIFEST.MF中配置了main方法的类

在我本地的 Windows 系统下执行指令及结果如下:

PS C:\Users\Administrator\Desktop> java -jar -Xmx32m .\A.jar A B C
第0个参数:A
第1个参数:B
第2个参数:C
系统可用最大堆内存:-Xmx32M

4. jar -cp


java -cp [-options] class [args...]

-options表示虚拟机参数,如-Xmx32m
class表示带有main方法的Java类
args表示main方法的参数

在我本地的 Windows 系统下执行指令及结果如下:

PS C:\Users\Administrator\Desktop> java -cp .\A.jar test.ArgsTest A B C
第0个参数:A
第1个参数:B
第2个参数:C
系统可用最大堆内存:-Xmx32M

参考资料

《深入理解 Java 虚拟机(第 2 版) : JVM 高级特性与最佳实践》 《实战 Java 虚拟机 : JVM 故障诊断与性能优化》

JVM 系列文章汇总


【原创】JVM系列01 | 开篇 【原创】JVM系列02 | Java虚拟机结构 【原创】JVM系列03 | Java栈—方法是如何调用的? 【原创】JVM系列04 | 栈上分配 【原创】JVM系列05 | TLAB上分配

之前,给大家发过三份Java面试宝典,这次新增了一份,目前总共是四份面试宝典,相信在跳槽前一个月按照面试宝典准备准备,基本没大问题。 《java面试宝典5.0》(初中级) 《350道Java面试题:整理自100+公司》(中高级) 《资深java面试宝典-视频版》(资深) 《Java[BAT]面试必备》(资深) 分别适用于初中级,中高级,资深级工程师的面试复习。 内容包含java基础、javaweb、mysql性能优化、JVM、锁、百万并发、消息队列,高性能缓存、反射、Spring全家桶原理、微服务、Zookeeper、数据结构、限流熔断降级等等。 获取方式:点“在看”,V信关注上述单号并回复 【面试】即可领取,更多精彩陆续奉上。

看到这里,证明有所收获 必须点个在看支持呀,喵