一、三种参数类型

   1、标准参数:比较稳定,以后版本会保留

      -help

      -version

   2、-X参数(非标准参数)

      -Xint

      -Xcomp

   3、-XX参数(非标准参数,使用率较高)

      -XX:newSize

      -XX:+UseSerialGC

二、标准参数

  一般都是很稳定的,在未来jvm版本中不会改变,可以使用java -help检索出所有的标准参数。

三、-X参数

  非标准选项,如有更改,恕不另行通知。

  使用java -X检索出-X的参数。

   -Xint,-Xcomp,-Xmixed

    -Xint会强制JVM执行所有的字节码,会降低运行速度,通常低10倍或更多。

    -Xcomp与-Xint相反,会把所有的字节码编译成本地代码。

    -Xmixed是混合模式,是JVM的默认模式,推荐。

四、-XX参数

  主要用于JVM的调优和debug操作。有两种,boolean类型和非boolean类型。

   boolean类型

    格式:-XX:[+-]<name> 表示启用或禁用<name>属性。

    如:-XX:+DisableExplicitGC 表示禁止用手动调用gc操作,也就是System.gc()无效。

   非boolean类型

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

    如:-XX:NewRatio=1表示新生代和老年代的比值。

   -Xms 与 -Xmx参数

    -Xms512m:等价于-XX:InitialHeapSize=512m,设置初始堆内存为512M。

    -Xmx2048m:等价于-XX:MaxHeapSize=2048m,设置最大堆内存为2048M。

 五、查看jvm的运行参数

  1、运行java命令时打印参数

    添加参数-XX:+PrintFlagsFinal。

   2、查看正在运行的jvm参数 

    查看所有java进程:jps -l。

    查看某进程的jvm参数:jinfo -flags ${pid}  /  jinfo -flag <参数名> ${pid}。

六、jvm的内存模型

  1、jdk1.7的堆内存模型

     Young年轻代

     Tenured老年代

     Perm永久代

   2、jdk1.8的堆内存模型

    

      Young年轻代

       Tenured老年代

       元空间(占用系统内存)

   3、查看堆内存使用情况

      jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。

        jstat [-命令选项] [进程id] [间隔时间/毫秒] [查询次数]

        例1:查看class加载统计

          C:\Users\lenovo>jstat -class 11976
          Loaded   Bytes      Unloaded   Bytes   Time
          4730       9436.1    0                 0.0       10.54

        说明:

          loaded:加载class的数量

          bytes:所占用空间大小

          unloaded:未加载占用空间

          time:时间

        例2:查看编译统计        

          C:\Users\lenovo>jstat -compiler 11976
          Compiled  Failed  Invalid  Time      FailedType    FailedMethod
          2970           0            0       13.28    0

        说明:

          compiled:编译数量

          failed:失败数量

          invalid:不可用数量

          time:时间

          failedType:失败类型

          failedMethod:失败的方法

        例3:垃圾回收统计        

            jstat -gc 11976
            S0C         S1C         S0U   S1U   EC             EU           OC

            24576.0   25600.0   0.0     0.0     206336.0   54242.5   59392.0 

OU           MC           MU           CCSC    CCSU     YGC    YGCT  FGC

            27371.7   27096.0    26635.1   3200.0   3028.4     17        0.210  2 

            FGCT    GCT

            0.160     0.370

         说明:

          S0C:第一个survivor区的大小(kb)

          S1C:第二个survivor区的大小(kb)

          S0U:第一个survivor区的使用大小(kb)

          S1U:第二个survivor区的使用大小(kb)

          EC:Eden区的大小 (kb)

          EU:Eden区的使用大小 (kb)

          OC:Old区的大小 (kb)

          OU:Old区的使用大小 (kb)

          MC:方法区的大小 (kb)

          MU:方法区的使用大小 (kb)

          CCSC:压缩类空间大小(kb)

          CCSU:压缩类空间使用大小(kb)

          YGC:年轻代垃圾回收次数

          YGCT:年轻代垃圾回收消耗时间

          FGC:老年代垃圾回收次数

          FGCT:老年代垃圾回收消耗时间

          GCT:垃圾回收消耗总时间

七、jmap的使用以及内存溢出分析

   1、查看内存使用情况

      jmap -heap 11976

   2、查看内存中对象数量及大小

      查看所有对象,包括活跃及非活跃:jmap -histo ${pid} | more

      查看活跃对象:jmap -histo:live ${pid} | more

      

JVM运行参数的更多相关文章

  1. IntelliJ IDEA设置JVM运行参数

    2015十一月 28 原 IntelliJ IDEA设置JVM运行参数 分类:JavaSE (11566) (1) 打开 IDEA 安装目录,看到有一个 bin 目录,其中有两个 vmoptions ...

  2. idea设置JVM运行参数

    对JVM运行参数进行修改是JVM性能调优的重要手段,下面介绍在应用程序开发过程中JVM参数设置的几种方式. 方式一 java程序运行时指定 -Dproperty=value 该参数通常用于设置系统级全 ...

  3. 【转】idea设置JVM运行参数

    对JVM运行参数进行修改是JVM性能调优的重要手段,下面介绍在应用程序开发过程中JVM参数设置的几种方式. 方式一 java程序运行时指定 -Dproperty=value 该参数通常用于设置系统级全 ...

  4. JVM 运行参数 & 代码监控

    1.Java代码监控 JDK提供java.lang.management包, 其实就是基于JMX技术规范,提供一套完整的MBean,动态获取JVM的运行时数据,达到监控JVM性能的目的. packag ...

  5. IntelliJ IDEA和Eclipse设置JVM运行参数

    打开 IDEA 安装目录,看到有一个 bin 目录,其中有两个 vmoptions 文件,需针对不同的JDK进行配置: 32 位:idea.exe.vmoptions64 位:idea64.exe.v ...

  6. JVM运行参数优化详细教程

    获取设置的参数str的值:  常用的-X参数有以下这些: 手动调用GC执行垃圾回收操作:(-XX:+DisableExplicitGC 手动调用将会失效) 查看tomcat的进程ID: 或者:

  7. IntelliJ IDEA之如何设置JVM运行参数

    步骤一: 点击IDEA右上角的 Edit Configurations 设置参数: -XX:+PrintGCDetails -Xmx128M -Xms128M 步骤二:在VM options中设置参数 ...

  8. JVM运行时数据区内容简述

    JVM运行时数据区分为五个部分:程序计数器.虚拟机栈.本地方法栈.堆.方法区.如下图所示,五部分其中又分为线程共享区域和线程私有区域,下面将分别介绍每一部分. 1. PC程序计数器 程序计数器是一块较 ...

  9. jvm相关参数

    官方地址:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html#BEHHGFAE 一.查看jvm运行参数 1.查看 ...

  10. 查看JVM运行时参数

    1.查看JVM运行时参数 -XX:+PrintFlagsInitial -XX:PrintFlagsFinal -XX:+UnlockExperimentalVMOptions 解锁实验参数 -XX: ...

随机推荐

  1. mongo docker compose

    49dSsULIAv6NiP8hdqqbapRTHVx9BRYU4VVakN9A4FJWV0KufqEm/UoTUvn9Z4eg FRP7iHXF6Qiou5MK2Ak76zRBU7MOIVCl0DI ...

  2. 【转载】用shell命令一步步获取Java版本号

    https://blog.csdn.net/f20052604/article/details/100269768 1.打印java -version命令echo $(java -version)输出 ...

  3. Mac触控板设置以及使用

    Mac 触控板体验是非常好的,很多同学甚至直接用触控板代替鼠标操作,但是默认设置中有一些功能是没有开启的,需要手动配置. 本文就来说说 如何更改 Mac 触控板默认设置,让触控板变得更高效. 一.启用 ...

  4. 基于Three.js的大屏3D地图(一)

    依赖安装 yarn add three yarn add @types/three yarn add d3-geo three库安装后在node_modules下其还包含核心three/src和插件t ...

  5. Qt音视频开发29-Onvif云台控制

    一.前言 云台控制也是onvif功能中最常用的,最常用的功能排第一的是拿到视频流地址,排第二的就是云台控制了,云台控制的含义就是对带云台的摄像机进行上下左右的移动,一般云台摄像机都是带有一个小电机,一 ...

  6. [转]快速搭建简单的LBS程序——地图服务

    很多时候,我们的程序需要提供需要搭建基于位置的服务(LBS),本文这里简单的介绍一下其涉及的一些基本知识. 墨卡托投影 地图本身是一个三维图像,但在电脑上展示时,往往需要将其转换为二维的平面图形,需要 ...

  7. 携程技术分享:亿级流量的办公IM及开放平台技术实践

    本文由携程技术Jim分享,原题"日访问过亿,办公IM及开放式平台在携程的实践",下文进行了排版和内容优化. 1.引言 携程内部的办公IM项目最早在2016年立项,经历了初期简单办公 ...

  8. SHAPEIT算法简介

    本文是基于SHAPIT2和SHAPEIT4的,先介绍SHAPEIT2的算法原理,然后简单介绍了一下SHAPEIT4更新的部分.文中介绍主要集中在算法部分,比较简介,具体内容请看参考文献. [SHAPE ...

  9. Java 中toString方法在枚举中的应用:展示枚举字段信息

    在Java编程中,枚举(enum)是一种特殊的数据类型,它允许程序员定义一组固定的常量.枚举类型在Java中非常有用,尤其是在需要表示一组固定选项(如星期.月份.方向等)时.尽管枚举类型在定义时看起来 ...

  10. python SQLAlchemy ORM——从零开始学习 01 安装库

    01基础库 1-1安装 依赖库:sqlalchemy pip install sqlalchemy #直接安装即可 1-2导入使用 这里讲解思路[个人的理解],具体写其实就是这个框架: 导入必要的接口 ...