精华内容
下载资源
问答
  • 其中 [-options] 配置 JVM参数,[args…] 配置 Java 运行参数 2. 运行时参数 其中args为运行时参数,即main方法中的参数数组args,可以通过修改启动配置进行设置,以idea为例,如图这里设置了3个参数,每个参数之间...

    1. java启动命令

    运行一个java应用程序的语法分两种,分别为:

    1. 执行类:java [-options] class [args…]
    2. 执行jar文件:java [-options] -jar jarfile [args…]

    其中 [-options] 配置 JVM参数,[args…] 配置 Java 运行参数

    2. 运行时参数

    其中args为运行时参数,即main方法中的参数数组args,可以通过修改启动配置进行设置,以idea为例,如图这里设置了3个参数,每个参数之间用空格分隔,如果参数自身带有空格,则需要用引号包裹。
    在这里插入图片描述
    在这里插入图片描述

    3. JVM参数

    标准参数

    标准参数,顾名思义,标准参数中包括功能以及输出的结果都是很稳定的,基本上不会随着JVM版本的变化而变化。
    我们可以通过 -help 命令来检索出所有标准参数。
    在这里插入图片描述
    预定义的标准参数(非-D开头的选项)的个数是有限的,。但是我们还可以自定义设置系统属性,其标准格式为:-Dargname=argvalue,多个参数之间用空格隔开,如果参数值中间有空格,则用引号括起来。

    我们在设置VM参数时不能随意设置,要么使用-Dargname=argvalue这种形式,要么使用预定义的标准参数,如-javaagent:xxxx,以及-classpath xxxx

    其中,参数名可以是 Java 默认的,此类参数由 JVM 虚拟机自动识别并生效,例如,-Dfile.encoding=UTF-8 用于指定文件编码格式;也可以是用户自定义的,例如,-Dmy=user,程序中可以读取该参数值,执行相关逻辑。

    虚拟机系统参数中设置的参数键值对(只有-D定义的系统属性是键值对形式),在程序中可以用 System.getProperty(“propertyName”) 获取对应参数值。

    /**
     * VM Args:-Dmy=user
     * 
     * @author moonspirit
     * @version 1.0
     */
    public class VMargs {
    
        public static void main(String[] args) {
            String result = System.getProperty("my");
            System.out.println("my: " + result);
        }
    }
    

    输出结果:

    在这里插入图片描述
    关于System.getProperty(“propertyName”)可参考另一文章

    参考文章:https://www.cnblogs.com/ysocean/p/11109018.html

    非标准参数(-X以及-XX)

    X参数

    对应前面讲的标准化参数,这是非标准化参数。表示在将来的JVM版本中可能会发生改变,但是这类以 -X开始的参数变化的比较小。

    我们可以通过 Java -X 命令来检索所有-X 参数。
    在这里插入图片描述

    XX参数

    这是我们日常开发中接触到最多的参数类型。这也是非标准化参数,相对来说不稳定,随着JVM版本的变化可能会发生变化,主要用于JVM调优和debug。

    注意:这种参数是我们后续介绍JVM调优讲解最多的参数。

    该参数的书写形式又分为两大类:
      
    ①、Boolean类型

    格式:-XX:[±] 表示启用或者禁用name属性。

    例子:-XX:+UseG1GC(表示启用G1垃圾收集器)
      
    ②、Key-Value类型

    格式:-XX:= 表示name的属性值为value。

    例子:-XX:MaxGCPauseMillis=500(表示设置GC的最大停顿时间是500ms)

    demo

    这是一个java程序启动时的启动参数信息,在格式上进行了一下分割

    在这里插入图片描述运行配置如下图
    在这里插入图片描述
    有些vm参数是idea在启动时的默认配置

    这里暂不介绍各参数用法,留待以后归纳

    展开全文
  • 问题不同版本的spring-boot-maven-plugin的jvm参数配置有所不同,同时与通过main方法启动springboot程序传递参数也有所不同。分析在运行main方法时,可以通过java -jar 后面通过添加-D的参数即可传递,比如:java -...

    问题

    不同版本的spring-boot-maven-plugin的jvm参数配置有所不同,同时与通过main方法启动springboot程序传递参数也有所不同。

    分析

    在运行main方法时,可以通过java -jar 后面通过添加-D的参数即可传递,比如:

    java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 test-tool.jar

    而对于通过spring-boot-maven-plugin插件的run方法启动时传递参数,不同版本就有所差异。通过插件启动方式如下图:
    这里写图片描述

    在此只以1.5.4.RELEASE版本为例,pom.xml文件配置:

    <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <jvmArguments>-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005</jvmArguments>
                    </configuration>
                </plugin>
            </plugins>
        </build>

    此时运行spring-boot:run,是可以正常传递参数。但此时通过mvn spring-boot:run命令来传递参数,参数值将会无效。

    同样,即使项目中pom文件配置了上面的plugin,直接通过main方法启动,此参数也是不会生效的。打包部署时依旧需要在执行命令中添加参数项。

    总之,就是启动springboot时传递参数,在某些情况是有效,在某些情况是无效的。而spring-boot-maven-plugin配置的参数是针对上图中执行spring-boot:run时生效的。

    延伸阅读

    相关类似可参考资料:
    https://github.com/spring-projects/spring-boot/issues/875
    http://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/run-debug.html
    https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.1-Release-Notes#running-your-app-using-maven
    https://github.com/spring-projects/spring-boot/issues/1095

    展开全文
  • 1、查看Java进程PID和启动类和启动参数 1.1 jps 命令 # 1、列出PID和主类名 jps 2008 Bootstrap 2657 Jps # 2、列出PID和Java完成主类名 jps -l 2017 org.apache.catalina.startup.Bootstrap 2612 sun.tools.jps....

    1、查看Java进程PID和启动类和启动参数

    1.1 jps 命令
    # 1、列出PID和主类名
    jps 
    2008 Bootstrap
    2657 Jps
    
    # 2、列出PID和Java完成主类名 
    jps -l
    2017 org.apache.catalina.startup.Bootstrap
    2612 sun.tools.jps.Jps
    
    # 3、列出PID和应用程序参数  会列出jar包
    jps -lm
    2017 org.apache.catalina.startup.Bootstrap start
    2588 sun.tools.jps.Jps -lm
    
    # 4、列出PID和JVM参数启动参数
    jps -v
    2017 Bootstrap -Djava.util.logging.config.file=/usr/local/tomcat-web/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dfile.encoding=UTF-8 -Xms256m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m -verbose:gc -Xloggc:/usr/local/tomcat-web/logs/gc.log-2014-02-07 -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xnoclassgc -Djava.endorsed.dirs=/usr/local/tomcat-web/endorsed -Dcatalina.base=/usr/local/tomcat-web -Dcatalina.home=/usr/local/tomcat-web -Djava.io.tmpdir=/usr/local/tomcat-web/temp
    2624 Jps -Dapplication.home=/usr/lib/jvm/jdk1.6.0_43 -Xms8m
    # 类似的命令 
    jps -lvm
    

    平时推荐使用:

    jps -l  # 查看启动了哪些java进程
    # 然后使用pid查看进程的端口
    jps -v # 查看某进程的启动参数
    

    2、使用图形化界面

    2.1 jconsole命令

    查看某一个虚拟机的内存使用情况

    3、查看JVM内存使用情况命令

    3.1 jstat -gcutil java进程PID 打印时间间隔 (ms) 打印次数
    jstat -gcutil  808508  1000 5
      S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
     99.85   0.00  94.45  19.26  96.09  92.92      2    0.020     0    0.000    0.020
     99.85   0.00  94.45  19.26  96.09  92.92      2    0.020     0    0.000    0.020
     99.85   0.00  94.45  19.26  96.09  92.92      2    0.020     0    0.000    0.020
     99.85   0.00  94.45  19.26  96.09  92.92      2    0.020     0    0.000    0.020
     99.85   0.00  94.45  19.26  96.09  92.92      2    0.020     0    0.000    0.020
     
     # 打印的是各区使用空间占总空间的百分比
    
    3.2 jstat命令详情
    jstat有如下选项:
       -class:
    监视类装载、卸载数量、总空间及类装载所耗费的时间
       -gc:
    监听Java堆状况,包括Eden区、两个Survivor区、老年代、永久代等的容量,以用空间、GC时间合计等信息
       -gccapacity:
    监视内容与-gc基本相同,但输出主要关注java堆各个区域使用到的最大和最小空间
       -gcutil:
    监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比
       -gccause:
    与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因
       -gcnew:
    监视新生代GC状况
       -gcnewcapacity:
    监视内同与-gcnew基本相同,输出主要关注使用到的最大和最小空间
       -gcold:
    监视老年代GC情况
       -gcoldcapacity:
    监视内同与-gcold基本相同,输出主要关注使用到的最大和最小空间
       -gcpermcapacity:
    输出永久代使用到最大和最小空间
       -compiler:
    输出JIT编译器编译过的方法、耗时等信息
       -printcompilation:
    输出已经被JIT编译的方法
    
    一些术语的中文解释:
    S0C:S0区容量(S1区相同,略)
    S0U:S0区已使用
    EC:E区容量
    EU:E区已使用
    OC:老年代容量
    OU:老年代已使用
    PC:Perm容量
    PU:Perm区已使用
    YGC:Young GC(Minor GC)次数
    YGCT:Young GC总耗时
    FGC:Full GC次数
    FGCT:Full GC总耗时
    GCT:GC总耗时
    

    4、 其他常用命令(参考自

    4.1 jstack

    用于生成当前JVM的所有线程快照,线程快照是虚拟机每一条线程正在执行的方法,目的是定位线程出现长时间停顿的原因

    -F:当正常输出的请求不被响应时,强制输出线程堆栈

    -l:除堆栈外,显示关于锁的附加信息

    -m:如果调用到本地方法的话,可以显示C/C++的堆栈

    命令格式:jstack [option] vmid

    4.2 jmap

    jmap用来查看堆内存使用状况,一般结合jhat使用

    用于显示当前Java堆和永久代的详细信息(如当前使用的收集器,当前的空间使用率等)

    -dump:生成java堆转储快照

    -heap:显示java堆详细信息(只在Linux/Solaris下有效)

    -F:当虚拟机进程对-dump选项没有响应时,可使用这个选项强制生成dump快照(只在Linux/Solaris下有效)

    -finalizerinfo:显示在F-Queue中等待Finalizer线程执行finalize方法的对象(只在Linux/Solaris下有效)

    -histo:显示堆中对象统计信息

    -permstat:以ClassLoader为统计口径显示永久代内存状态(只在Linux/Solaris下有效)

    命令格式:jmap [option] vmid

    用jmap把进程内存使用情况dump到文件中,再用jhat分析查看

    jmap进行dump命令格式如下:

    jmap -dump:format=b,file=dumpFileName pid

    我一样地对上面进程ID为21711进行Dump:

    root@ubuntu:/# jmap -dump:format=b,file=/tmp/dump.dat 21711

    Dumping heap to /tmp/dump.dat …

    Heap dump file created

    4.3 jhat

    用于分析使用jmap生成的dump文件,是JDK自带的工具,使用方法为: jhat -J -Xmx512m [file]

    不过jhat没有mat好用,推荐使用mat(Eclipse插件: http://www.eclipse.org/mat ),mat速度更快,而且是图形界面。

    展开全文
  • 1.JVM参数如何查看

    2018-11-23 14:33:23
    1.首先,在jDK的bin目录下点击运行该exe程序,如下所示: ...VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带(java启动时不需要特定参数,监控工具在bin/jvisualvm.exe)。 Vis...

    1.首先,在jDK的bin目录下点击运行该exe程序,如下所示:

    首先给VisualVM点赞,这个工具非常的好用

     

    点开过后运行界面如下所示:

     

    我个人试用的IDE是IDEA

    VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带(java启动时不需要特定参数,监控工具在bin/jvisualvm.exe)。

    VisualVM,能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的).

     

    从界面上看还是比较简洁的,左边是树形结构,自动显示当前本机所运行的Java程序,还可以添加远程的Java VM,其中括号里面的PID指的是进程ID。OverView界面显示VM启动参数以及该VM对应的一些属性。Monitor界面则是监控Java堆大小,Permgen大小,Classes和线程数量。jdk不同版本中界面会不太一致,如有的含cpu监控,有的则不含(jdk1.6.0_10未包含)。

    可用插件如下所示:

    勾选前面的勾可以去自动下载安装插件:

    过程如下所示:

    安装完成之后进行重启,即可完成插件安装:

    打开任务管理器,(windows下)在linux下编写命令:

    ps -ef|grep eclipse即可看到对应的进程pid

    进入JM即可得知当前的一些pid进程所占据的内存区域以及空间,具体表现如下图所示:

    查看windows下的pid,同理操作;

    表明这是一个线程安全的机制,其次是这个工程对应的绝对路径,以及使用区域,和编译器对应的版本以及log存放的位置以及临时存储区地址;

    显示一个线程结果图如下:

    线程监控以及运行情况也可以看一下:

     

    展开全文
  • 前面做好了C++端程序的简单日志输出,接下来到启动JAVA程序输出日志了。为了尽量的精简,所以不考虑使用log4j,使用java自带的IO流输出。 一,对原来的工程进行改造: public class HelloWorld { public static ...
  • JVM自带的监控工具

    2015-10-22 17:05:37
    JVM监控工具 Java的安装包自带了很多优秀的工具,善用这些工具对于监控和调试Java程序非常有帮助。常用工具如下: jps  ...-v: 输出完整的JVM参数。 jstack  用途:1)查看java程序崩溃生成cor
  • 原因,之前进行JVM调优时,把程序打成了WAR包,然后在tomcat/bin/catalina.bat中配置了如下的JVM参数 参数本身没问题,当我停掉tomcat启动的war包,去通过IDEA启动项目时就报错了: 起初没意识到这个问题,就...
  • 远程调试java程序

    2010-07-16 10:51:00
    JVM 本身支持指定参数来让java程序以调试模式启动。虚拟机运行在调试模式下,你只要去连接他的相应的监听端口就可以了。像tomcat等服务器也都提供了指定调试参数的设置方法典型的调试参数如下-Xdebug -Xrunjdwp:...
  • JVM

    2020-10-08 19:39:50
    百分之99的JVM调优都是在堆中进行调优的,Java栈,本地方法栈,程序计数器是不会有垃圾存在的。 类加载器 作用:加载Class文件 类加载器主要有以下几个: 虚拟机自带的类加载器 根(启动类加载器)rt(一般为r
  • 通过jmx连接监控远程java程序

    千次阅读 2018-06-07 15:57:39
    jdk自带的监控jvm的工具有...需要做的只有在启动远程主机上的java程序的时候加上如下参数: -Dcom.sun.management.jmxremote.port=端口号 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremot...
  • java 自带的性能分析工具...当前运行的java程序的pid、启动Main jps -v 启动的pid 、 Main 与启动VM参数,不包含默认启动参数,如要查看默认启动参数使用 jinfo -flags ${pid} 二、jstat 查看java 运...
  • 本书是一本关于Java最佳实践的集大成之作,它从Java语言本身、Java程序的架构设计和思想、Java程序的编码规范和习惯等方面对151个经典的问题给出了解决方案,为Java开发者提高开发效率和编写高质量的Java代码提供了...
  • JVM监控工具 Java的安装包自带了很多优秀的工具,善用这些工具对于监控和调试Java程序非常有帮助。常用工具如下: jps  ...-v: 输出完整的JVM参数。 jstack  用途:1)查看java程序崩溃生成cor...
  • JVM探究

    2021-01-18 21:47:29
    JVM的常用调优参数有哪些? 内存快照如何抓取,怎末分析Dump文件? 知道吗? 谈谈JVM中,类加载器你的认识? JVM的位置 JVM的体系结构 类加载器 作用:加载Class文件 new Student(); 引用是在栈里 具体对象...
  • 使用Jconsole观察JVM

    2016-09-27 10:34:32
    前段时间做有关于Flume入库程序的调试,用到了Jdk自带的调试工具–jconsole.exe,...配置想要通过jconsole连接的java程序jvm启动参数 本文已tomcat为例,其他程序也一样 修改$TOMCAT_HOME/bin/catalina.sh 在JAVA
  • 初识JVM

    2021-02-24 22:24:18
    JVM的常用调优参数有哪些? 内存快照如何抓取,怎么分析Dump文件? 谈谈JVM中,类加载器的认识 JVM的位置 JVM的体系结构 类加载器 作用: 加载Class 文件~ 虚拟机自带的加载器 启动类(根)加载器 ...
  • JVM监控工具

    2016-12-13 19:47:09
    Java的安装包自带了很多优秀的工具,善用这些工具对于监控和调试Java程序非常有帮助。常用工具如下: jps  用途:jps用来查看JVM里面所有进程...-v: 输出完整的JVM参数。 jstack  用途:1)查看java程序
  • jvm笔记

    2020-07-04 15:48:05
    JVM的常用调优参数有哪些? 内存快照如何抓取,怎么分析Dump文件? 谈谈JVM中,类加载器你的认识? 1. jvm的位置 运行在操作系统之上 2. jvm体系结构 3. 类加载器 作用:加载.class文件 ----》 1. 虚拟机自带的...
  • jvm探究

    2020-10-09 17:32:22
    jvm的常用调优参数有哪些? 内存快照如何抓取,怎么分析Dump文件 谈谈jvm中,类加载器的认识? 1.jvm的位置 操作系统之上,可将其看成一个软件 2.jvm的体系结构 3.类加载器 作用:加载Class文件 三种加载机制:...
  • 对于监控JVM,jdk也提供了很多工具,供我们来使用,其中命令jstat,是JDK自带的一个轻量级小工具,可以查看堆内存各部分的使用量,以及加载类的数量,对Java应用程序的资源和性能进行实时的监控,包括了对Heap size...
  • Java自带性能分析工具

    千次阅读 2017-04-21 21:10:42
    安装好JDK后,其目录中就包含了许多性能分析工具: 1、jvisualvm 用于连接远程JVM,监控系统运行性能参数。...您可以轻松地使用 JConsole(或者,它更高端的 “近亲” VisualVM )来监控 Java 应用程序性能和
  • JVM 监控,调优,调试

    2018-08-08 14:13:00
    JVM监控工具 Java的安装包自带了很多优秀的工具,善用这些工具对于监控和调试Java程序非常有帮助。常用工具如下: jps 用途:jps用来查看JVM...-v: 输出完整的JVM参数。 jstack 用途:1)查看java程序崩...
  • 首先jvisualVM是JDK自带的,位置:jdk的bin包下 以我的示例: ...首先修改启动jar包的参数: 原始:nohup java -jar weiwen-provider-uac.jar & 修改如下:(注释可省略) nohup java -Djava.rmi.serv...
  • 狂神说jvm

    2021-02-25 08:42:03
    JVM常用的调优参数有哪些? 内存快照如何抓取? 怎么分析Domp文件 ? 知道吗? 谈谈JVM中,类加载器你的认识? 1.jvm的位置 2.jvm的体系结构 3.类加载器 4.双亲委派机制 虚拟机自带的加载器 启动类 (根) 加载器 ...
  • Java学习笔记49:Java监控常用工具

    千次阅读 2013-06-17 10:23:50
    Java的安装包自带了很多优秀的工具,善用这些工具对于监控和调试Java程序非常有帮助。常用工具如下: jps  ...-v: 输出完整的JVM参数。 jstack  用途:1)查看java程序崩溃生成core文件,获得cor
  • 修改要启动java程序启动参数JVM_OPTS)。 修改文件权限 启动jvisualvm 监控服务器上的java程序 jstatd 连接到远程JVM 启动jstatd服务 创建安全策略文件 启动jjstatd带参数 JMX连接与JStatD连接的区别 linux...

空空如也

空空如也

1 2 3 4 5
收藏数 88
精华内容 35
关键字:

java程序带jvm参数启动

java 订阅