zoukankan      html  css  js  c++  java
  • jvm学习-(1)

    1 jvm的运行参数

      1.1 三种参数类型

    • 标准参数

        -help

        -version

    •  -X参数(非标准参数)

        -Xint

        -Xcomp

    •  -XX参数(使用率极高)

        -XX:newSize

        -XX:+UseSerialGc

      1.2标准参数

        通过“java -help”可以看到所有标准参数命令

        实例1,通过“java -version”查看java的版本号

        实例2,通过“java -Dstr=hello Word  XXX”(XXX为字节码文件)可以为运行的程序设置系统变量

      1.3非标准参数

        —X参数在不同的jvm中可能不同

        实例1 -Xint,在解释模式下强制JVM执行所有的字节码,会降低运行速度,通常低于10倍或者更多

        实例2 -Xcomp,在编译模式下,第一次使用时会强制把所有的字节码编译成本地代码,从而提高最大程度的优化

        实例3 -Xmixed是混合模式,是上面两种混合使用有jvm自己决定,这也是jvm的默认模式,也会推荐模式

      1.4-XX 参数

        -XX也是非标准参数,通常用来jvm调优和debug模式

        实例1 “-XX:+DisableExplicitGc” 表示禁用手动调用gc操作,也就是system.gc()无效(这是一种boolean类型的使用方式)

        实例2 “-XX:NewRation=1” 表示新生代跟老年代的比值(这是一种非boolean类型的操作)

      1.5 -Xms与-Xmx参数

        用于设置堆内存初始化的大小,属于jvm调优所以是-XX参数

        实例1,-Xmx2084m 等价于-XX:MaxHeapSize,设置jvm最大的堆内存为2018M

        实例1,-Xms512m 等价于-XX:InitalHeapSize,设置jvm初始化内存为512M 

      1.6 查看jvm的运行参数

        实例1,运行java命令时打印参数,需要添加-XX:+PrintFlagsFinal参数即可。

        参数有boolean类型和数字类型,值的操作符是=或:=,分别代表默认值和被修改的值

        实例2,如果想要查看正在运行的jvm就需要借助于jinfo命令查看,jinfo -flag <参数名> <进程id>

    2,jvm的内存模型

      Young年轻代(分三部分Eden,和 两个survivor)经过几次GC回收仍然存活的对象转移到tenured

      Tenured年老区 主要保存生命周期长的对象,一般如果系统使用了application级别的缓存,缓存中的对象往往会转移到该区间

      Perm永久区 Perm代主要保存class,method,filed对象,常量池(jdk1.8之后取消了,多了一个元数据区)

      Virtual区,最大内存和初始化内存的差值

  • 相关阅读:
    代理模式
    spring aop
    mybatis从入门到精通(其他章节)
    mybatis从入门到精通(第6章)
    Java中Compareable和Comparator两种比较器的区别
    Java的equals方法的使用技巧
    Dubbo的配置过程,实现原理及架构详解
    什么是IPFS?IPFS与区块链有什么关系
    leetCode242 有效的字母异位词
    需要多个参数输入时-----------------考虑使用变种的Builder模式
  • 原文地址:https://www.cnblogs.com/wangpengtao/p/10422200.html
Copyright © 2011-2022 走看看