深入浅析JVM中的参数分配-创新互联

深入浅析JVM中的参数分配?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

成都创新互联专注于红岗网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供红岗营销型网站建设,红岗网站制作、红岗网页设计、红岗网站官网定制、小程序定制开发服务,打造红岗网络公司原创品牌,更为您提供红岗网站排名全网营销落地服务。

一、堆参数设置

-XX:+PrintGC 使用这个参数,虚拟机启动后,只要遇到GC就会打印日志

-XX:+UseSerialGC 配置串行回收器

-XX:+PrintGCDetails 可以查看详细信息,包括各个区的情况

-Xms:设置Java程序启动时初始化堆大小

-Xmx:设置Java程序能获得大的堆大小

-Xmx20m -Xms5m -XX:+PrintCommandLineFlags:可以将隐式或者显示传给虚拟机的参数输出

在实际工作中,我们可以直接将初始的堆大小与大堆大小设置相等,这样的好处是可以减少程序运行时的垃圾回收次数,从而提高性能。

配置运行时参数:-XX:+PrintGC -Xms5m -Xmx20m -XX:+UseSerialGC -XX:+PrintGCDetails -XX:+PrintCommandLineFlags

运行一下Demo:

package com.ietree.basicskill.jvm;

public class Demo01 {
  public static void main(String[] args) {
    
    // -XX:+PrintGC -Xms5m -Xmx20m -XX:+UseSerialGC -XX:+PrintGCDetails -XX:+PrintCommandLineFlags
    
    //查看GC信息
    System.out.println("max memory:" + Runtime.getRuntime().maxMemory());
    System.out.println("free memory:" + Runtime.getRuntime().freeMemory());
    System.out.println("total memory:" + Runtime.getRuntime().totalMemory());
    
    byte[] b1 = new byte[1*1024*1024];
    System.out.println("分配了1M");
    System.out.println("max memory:" + Runtime.getRuntime().maxMemory());
    System.out.println("free memory:" + Runtime.getRuntime().freeMemory());
    System.out.println("total memory:" + Runtime.getRuntime().totalMemory());
    
    byte[] b2 = new byte[4*1024*1024];
    System.out.println("分配了4M");
    System.out.println("max memory:" + Runtime.getRuntime().maxMemory());
    System.out.println("free memory:" + Runtime.getRuntime().freeMemory());
    System.out.println("total memory:" + Runtime.getRuntime().totalMemory());
    
  }
}

网站栏目:深入浅析JVM中的参数分配-创新互联
标题来源:http://hbruida.cn/article/dsdsjc.html