• JVM学习笔记(一,待整理)


    1、

    2、

    3、

    4、-Xint、-Xcomp、-Xmixed

    • 在解释模式(interpreted mode)下,-Xint标记会强制JVM执行所有的字节码,当然这会降低运行速度,通常低10倍或更多。
    • -Xcomp参数与它(-Xint)正好相反,JVM在第一次使用时会把所有的字节码编译成本地代码,从而带来最大程度的优化。
      • 然而,很多应用在使用-Xcomp也会有一些性能损失,当然这比使用-Xint损失的少,原因是-xcomp没有让JVM启用JIT编译器的全部功能。JIT编译器可以对是否需要编译做判断,如果所有代码都进行编译的话,对于一些只执行一次的代码就没有意义了。
    • -Xmixed是混合模式,将解释模式与编译模式进行混合使用,由jvm自己决定,这是jvm默认的模式,也是推荐使用的模式。

      -Xint:编译快,运行慢

      -Xcomp:编译慢,运行快

        注意:编译模式下,第一次执行会比解释模式下执行慢一些,注意观察。

      -Xmixed(默认)

    5、-XX参数 

    -XX参数也是非标准参数,主要用于jvm的调优和debug操作。
    -XX参数的使用有2种方式,一种是boolean类型,一种是非boolean类型:

    • boolean类型
      • 格式:-XX:[+-]
      • 如:-XX:+DisableExplicitGC 表示禁用手动调用gc操作,也就是说调用System.gc()无效
    • 非boolean类型
      • 格式:-XX:
      • 如:-XX:NewRatio=1 表示新生代和老年代的比值

      用法:

    [root@node01 test]# java ‐showversion ‐XX:+DisableExplicitGC TestJVM
    java version "1.8.0_141"
    Java(TM) SE Runtime Environment (build 1.8.0_141‐b15)
    Java HotSpot(TM) 64‐Bit Server VM (build 25.141‐b15, mixed mode)
    itcast

    6、-Xms与-Xmx参数(常用)
      -Xms-Xmx分别是设置jvm的堆内存的初始大小最大大小
      -Xmx2048m:等价于-XX:MaxHeapSize,设置JVM最大堆内存为2048M。
      -Xms512m:等价于-XX:InitialHeapSize,设置JVM初始堆内存为512M。
      适当的调整jvm的内存大小,可以充分利用服务器资源,让程序跑的更快。
      示例:

    [root@node01 test]# java ‐Xms512m ‐Xmx2048m TestJVM
    itcast

    7、查看jvm的运行参数

      有些时候我们需要查看jvm的运行参数,这个需求可能会存在2种情况:

      第一,运行java命令时打印出运行参数;
      第二,查看正在运行的java进程的参数;


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

    [root@node01 test]# java ‐XX:+PrintFlagsFinal ‐version
    [Global flags]
    uintx AdaptiveSizeDecrementScaleFactor = 4
    {product}
    uintx AdaptiveSizeMajorGCDecayTimeScale = 10
    {product}
    uintx AdaptiveSizePausePolicy = 0
    {product}
    uintx AdaptiveSizePolicyCollectionCostMargin = 50

      由上述的信息可以看出,参数有boolean类型和数字类型,值的操作符是=或:=,分别代表默认值和被修改的值。

      修改示例:

    java ‐XX:+PrintFlagsFinal ‐XX:+VerifySharedSpaces ‐version
    intx ValueMapInitialSize = 11
    {C1 product}
    intx ValueMapMaxLoopSize = 8
    {C1 product}
    intx ValueSearchLimit = 1000
    {C2 product}
    bool VerifyMergedCPBytecodes = true
    {product}
    bool VerifySharedSpaces := true
    {product}
    intx WorkAroundNPTLTimedWaitHang = 1
    {product}
    uintx YoungGenerationSizeIncrement = 20
    {product}
    uintx YoungGenerationSizeSupplement = 80
    {product}
    uintx YoungGenerationSizeSupplementDecay = 8
    {product}
    uintx YoungPLABSize = 4096
    {product}
    bool ZeroTLAB = false
    {product}
    intx hashCode = 5
    {product}
    java version "1.8.0_141"
    Java(TM) SE Runtime Environment (build 1.8.0_141‐b15)
    Java HotSpot(TM) 64‐Bit Server VM (build 25.141‐b15, mixed mode)
    #可以看到VerifySharedSpaces这个参数已经被修改了。

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

        如果想要查看正在运行的jvm就需要借助于jinfo命令查看。

        首先,启动一个tomcat用于测试,来观察下运行的jvm参数。

    cd /tmp/
    rz 上传
    tar ‐xvf apache‐tomcat‐7.0.57.tar.gz
    cd apache‐tomcat‐7.0.57
    cd bin/
    ./startup.sh
    #http://192.168.40.133:8080/ 进行访问

    访问成功:

    #查看所有的参数,用法:jinfo ‐flags <进程id>
    #通过jps 或者 jps ‐l 查看java进程
    [root@node01 bin]# jps
    6346 Jps
    6219 Bootstrap
    [root@node01 bin]# jps ‐l
    6358 sun.tools.jps.Jps
    6219 org.apache.catalina.startup.Bootstrap
    [root@node01 bin]#
    [root@node01 bin]# jinfo ‐flags 6219
    Attaching to process ID 6219, please wait...
    Debugger attached successfully.
    Server compiler detected.
    JVM version is 25.141‐b15
    Non‐default VM flags: ‐XX:CICompilerCount=2 ‐XX:InitialHeapSize=31457280
    ‐XX:MaxHeapSize=488636416 ‐XX:MaxNewSize=162529280 ‐
    XX:MinHeapDeltaBytes=524288 ‐XX:NewSize=10485760 ‐XX:OldSize=20971520 ‐
    XX:+UseCompressedClassPointers ‐XX:+UseCompressedOops ‐
    XX:+UseFastUnorderedTimeStamps ‐XX:+UseParallelGC
    Command line: ‐Djava.util.logging.config.file=/tmp/apache‐tomcat‐
    7.0.57/conf/logging.properties ‐
    Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager ‐
    Djava.endorsed.dirs=/tmp/apache‐tomcat‐7.0.57/endorsed ‐
    Dcatalina.base=/tmp/apache‐tomcat‐7.0.57 ‐Dcatalina.home=/tmp/apachetomcat‐
    7.0.57 ‐Djava.io.tmpdir=/tmp/apache‐tomcat‐7.0.57/temp
    #查看某一参数的值,用法:jinfo ‐flag <参数名> <进程id>
    [root@node01 bin]# jinfo ‐flag MaxHeapSize 6219
    ‐XX:MaxHeapSize=488636416
  • 相关阅读:
    SQL----Scalar 函数
    SQL----Group By and Having
    SQL--合计函数(Aggregate functions):avg,count,first,last,max,min,sum
    SQL 函数
    Auto-increment 自动增长
    sql--ALTER
    sql--Drop语句
    sql--index 索引
    sql--select into,create database,create table,Constraints
    sql--union
  • 原文地址:https://www.cnblogs.com/116970u/p/11444811.html
Copyright © 2020-2023  润新知