zoukankan      html  css  js  c++  java
  • JVM运行参数与内存模型

    JVM运行参数:合理的调整JVM参数,也能够加快运行速度
            标准参数:无论如何更新迭代版本,标准参数不会进行更改
                -version
                -help
            -X参数,非标准参数:在更新迭代过程中,有一些参数信息是变化的
                -Xms 初始内存
                -Xmx 最大内存
            -XX参数,非标准参数:专门做优化和debug用的,使用率比较高
                -XX:+UseSerialGC
            
            
            1.标准参数:一般来说标准参数比较稳定,我们可以使用java -help来查看所有的标准参数
                java -help查看所有的标准参数
                java -version查看版本
                java -D设置系统参数
                
                -server和-client有什么区别:
                    ServerVM模式当中,初始堆空间会大一些,默认使用的是并行垃圾回收器,启动慢,运行快
                    ClientVM模式当中。初始堆空间相对小一些,使用串行垃圾回收期,目的是为了让JVM启动速度更快一些,运行就比ServerVM慢一些
                    
                    JVM运行的时候是根据操作系统选择运行的模式
                        如果是32位的window操作系统,默认使用的client
                            如果在其他系统上,只要有2G以上的内存以及至少两个以上的CPU那么默认使用Server模式
                        在64位操作系统当中只有Server模式,不支持Client模式
            2.-X非标准参数
                在不同版本的JVM当中,参数可能有所不同,通过java -X查看非标准参数列表
                
                2.1非标准参数列表的三种模式
                    -Xint:解释模式(interpreted model),强制要求JVM执行所有的字节码,效率低
                    -Xcomp:编译模式,与-Xint相反,第一次会将所有的字节码编译成本地的代码,第一次运行慢,后续运行快
                        万一我们有一些字节码只需要编译一次
                    -Xmixed:混合模式,就是解释模式和编译模式混合使用,有jvm自身决定应该采用哪种模式,jvm默认的默认
            
            3.-XX参数:也是非标准参数,主要用于JVM调优和Debug操作
                -XX参数有两种模式:
                    3.1 boolean类型 +代表true,代表应用该参数   -代表false代表不应用该参数
                    3.2 非boolean模式
                        -XX:NewRatio=1
                    3.3 默认情况下没有禁用手动调用GC,也就是说程序员可以手动调用,手动回收
                        禁用手动调用垃圾回收器,程序员手动调用gc是无效的    java -showversion -XX:+DisableExplicitGC xxx
                        
            4.-Xms  -Xmx参数调整堆内存大小
                -Xms代表初始的堆内存大小        -Xmx代表最大堆内存大小
                java -Xms512m -Xmx1024m JVMTest
                
                -Xms512m等价于-XX:InitialHeapSize
                -Xmx2018m等价于-XX:MaxHeapSize
                
            5.查看Java程序运行时使用的参数
                java -XX:+PrintFlagsFinal JVMTest,查看过程中发现有=和:=,=代表默认值   :=代表修改过的值
                更改参数信息:java -XX:+PrintFlagsFinal -XX:+VerifySharedSpaces -version
            6.查看当前正在运行的Java的参数
                jps命令查看当前所有正在运行Java进程
                jps -l 查看当前所有正在运行Java进程详细信息
                查看正在运行的Java进程信息jinfo -flags 进程id
                查看进程的参数信息:jinfo -flag MaxHeapSize 6752

        二.内存模型
            1.7版本内存模型
                1.年轻代:新创建的对象,比如new的对象,在对象比较小会放在年轻代当中存储
                2.年老代:如果当前创建对象比较大,不经过年轻代直接放在年老代当中,年轻代通过多次垃圾回收期没有回收掉的对象也会放在年老代当中
                3.永久代:比如我们部署一个程序到Tomcat当中,Tomcat启动的时候要去加载所有的Class,以及Method,以及Field都会存放在永久代当中


            1.8版本内存模型
                1.年轻代:新创建的对象,比如new的对象,在对象比较小会放在年轻代当中存储
                2.年老代:如果当前创建对象比较大,不经过年轻代直接放在年老代当中,年轻代通过多次垃圾回收期没有回收掉的对象也会放在年老代当中
                3.MetaSpace元数据空间
            
            1.8版本以后废除了永久代,因为要融合JRocket VM虚拟机使用,JRocket VM虚拟机不支持永久代,所以废除了

  • 相关阅读:
    JeePlus:代码生成器
    JeePlus:API工具
    Java实现 洛谷 P1023 税收与补贴问题
    Java实现 洛谷 P1023 税收与补贴问题
    Java实现 洛谷 P1023 税收与补贴问题
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
    Java实现 洛谷 P1328 生活大爆炸版石头剪刀布
  • 原文地址:https://www.cnblogs.com/chx9832/p/12403296.html
Copyright © 2011-2022 走看看