JVM配置 及说明

以32位机器为例,示例 JVM配置一般如下:

JAVA_OPTS="-server -Xms1535m -Xmx1535m -XX:NewSize=320m -XX:MaxNewSize=30m -XX:PermSize=9m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true"

上面参数代表的含义是:  

       -Xms  初始Heap大小

  -Xmx  java heap最大值

  -XX:NewSize  新生代预估上限的默认值 (JVM在启动时会申请-Xmx指定值大小的空间,但其中绝大部分空间不会被立即分配,它们会一直保留着,直到运行过程中,JVM发现实际占用接近已分配上限值时,才从virtual中再分配掉一部分内存,这里的已分配上限值,可以叫做预估上限值)

      -XX:MaxNewSize  新生代占heap的最大值

     -XX:PermSize    perf区的初始大小;

     -XX:MaxPermSize  perm区占整个heap的最大值

     -Djava.net.preferIPv4Stack=true      关掉jvm的ipv6功能(Due to a bug in the JDK on Linux, a socket cannot be bound to an IPv6 address)

   更多参数值请参考 File:Java 6 JVM参数选项大全(中文版).pdf    




        JAVA 内存分为三个区:young,old,perm。 Young区保存刚实例化的对象,Young区满了后GC会将该对象移到Old区,Perm区用于存放静态文件,如java类、方法等。

        而我们平时所说的堆内存则只包括:young和old区。

        JVM有2个GC线程。第一个线程负责回收Heap的Young区。第二个线程在Heap不足时,遍历 Heap,将Young 区升级为Older区。Older区的大小等于-Xmx减去-Xmn,不能将-Xms的值设的过大,因为第二个线程被迫运行会降低JVM的性能。 一般而言,Server端JVM最好将-Xms和-Xmx设 为相同值。为了优化GC,最好让-Xmn值 约等于-Xmx的1/3;一个GUI程序最好是每10到20秒间运行一次GC, 每次在半秒之内完成。

 

你可能感兴趣的:(jvm,jdk,linux,.net,socket)