zoukankan      html  css  js  c++  java
  • Java虚拟机五 堆的参数配置

      堆空间是Java进程的重要组成部分,几乎所有的应用相关的内存空间都和堆有关。

      1.最大堆和初始堆的设置

       当Java程序启动时,虚拟机就会分配一块初始堆空间,使用参数 -Xms 指定这块空间的大小。一般来说,虚拟机尽可能维持初始堆空间的范围内运行。如果初始堆空间耗尽会进行扩展。最大堆空间使用参数 -Xmx指定。

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

     新生代的配置

       参数 -Xmn 可以用于设置新生代的大小。设置一个较大的新生代会减小老年代的大小,这个参数对系统性能以及GC行为影响较大。新生代的大小一般设置为整个堆空间的1/3到1/4。

       参数 -XX:SurvivorRatio 用来设置新生代中 eden空间和from/to空间的比例关系,含义如下:

       --X:SurvivorRatio=eden/from=eden/to

       这段代码连续向系统请求10MB空间,每次申请1MB

    [GC (Allocation Failure) [PSYoungGen: 512K->488K(1024K)] 512K->512K(19968K), 0.0008869 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
    Heap
     PSYoungGen      total 1024K, used 860K [0x00000000ffe80000, 0x0000000100000000, 0x0000000100000000)
      eden space 512K, 72% used [0x00000000ffe80000,0x00000000ffedd2f8,0x00000000fff00000)
      from space 512K, 95% used [0x00000000fff00000,0x00000000fff7a020,0x00000000fff80000)
      to   space 512K, 0% used [0x00000000fff80000,0x00000000fff80000,0x0000000100000000)
     ParOldGen       total 18944K, used 10264K [0x00000000fec00000, 0x00000000ffe80000, 0x00000000ffe80000)
      object space 18944K, 54% used [0x00000000fec00000,0x00000000ff6060a0,0x00000000ffe80000)
     Metaspace       used 2666K, capacity 4486K, committed 4864K, reserved 1056768K
      class space    used 286K, capacity 386K, committed 512K, reserved 1048576K
    Java HotSpot(TM) 64-Bit Server VM warning: NewSize (1536k) is greater than the MaxNewSize (1024k). A new max generation size of 1536k will be used.

    这里eden与from的比值为2比1,故eden区为512kb。这里使用的jdk1.8最后提示:NewSize (1536k) is greater than the MaxNewSize (1024k). A new max generation size of 1536k will be used.

    超过了设定的1M

       由于eden区无法容纳任何一个程序分配的1MB数组,故触发了一次新生代GC,对eden区进行了部分回收,同时,这个偏小的新生代无法为1MB数组预留空间,所以所有的都分配在老年代,老年代最终占用10264KB空间。

       在实际工作中,应该根据系统的特点做合理的设置,基本策略是:尽可能将对象预留在新生代,减少老年代GC的次数。

        除了可以使用-Xmn指定新生代的绝对大小外,还可以使用 -XX:NewRatio 来设置新生代和老年代的比例。  -XX:NewRatio=老年代 / 新生代

        

  • 相关阅读:
    文件进阶
    文件及文件操作
    字符编码
    集合
    数据类型之字典
    数据类型之列表,元组
    数据类型之数字,字符串
    for 循环语句
    while 循环语句
    深浅拷贝
  • 原文地址:https://www.cnblogs.com/taiguyiba/p/9761790.html
Copyright © 2011-2022 走看看