zoukankan      html  css  js  c++  java
  • JVM—调优参数学习

    Java堆

    1)是一个运行时数据区,类的对象从堆中分配空间;(new对象,GC销毁)
    2)堆的优势:运行时动态分配内存空间,不必事先通知编译器。缺点:存取速度慢;
    3)举例:String str1 = new String("aaa");
    String str2 = new String("aaa");
    最终:str1 != str2,new出来的存放堆中,每次调用都会新建一个对象;

    Java栈

    1)栈中存放基本数据类型的变量(byte、short、int、long、float、double、char、boolean)和对象的引用;
    2)栈的优势:存取速度快,栈数据可共享;缺点:存放数据的大小需要编译时确定,缺乏灵活性;
    3)举例:String str1 = "aaa";
    String str2 = "aaa";
    最终:str1 == str2, 内存中只存在一个对象“aaa”,栈共享,有利于节省空间;

    Tomcat调优

    1)maxThreads="300":设置当前Tomcat最大并发数,默认150,实际开发中,某个应用超过250个并发时会考虑应用服务器的集群;
    2)minSpareThreads="50":设置当前Tomcat初始化时创建的线程,默认25;
    3)acceptCount="250",当同事连接的人数达到maxThreads值时,还可以接收排队的连接数量,超过这个连接的则直接返回拒绝连接。默认100;
    4)enableLookups=“false”:是否开启域名反查,一般设置为false来提高处理能力,它的取值还有true,一般很少使用。
    5)maxKeepAliveRequests=“1”:nginx动态的转给tomcat,nginx是不能keepalive的,而tomcat端默认开启了keepalive,会等待keepalive的timeout,默认不设置就是使用connectionTimeout。所以必须设置tomcat的超时时间,并关闭tomcat的keepalive。否则会产生大量tomcat的socket timewait。maxKeepAliveRequests=”1”就可以避免tomcat产生大量的TIME_WAIT连接,从而从一定程度上避免tomcat假死。

    JVM调优

    如JAVA_OPTS=" JAVA_OPTS -Xmx512m -Xms512m -Xmn170m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4"
    1)-Xmx512m:设置Java虚拟机的堆最大可用内存大小,单位:兆;整个堆大小=年轻代+年老代+持久代。持久代一般固定65m。
    2)-Xms512m:设置Java虚拟机的堆的初始值内存大小,单位:兆,可以设置和-Xmx一样,避免每次垃圾回收完成后JVM重新分配内存;
    3)-Xmn170m:设置年轻代内存大小,单位:兆,Sun官方推荐为整个堆的3/8。
    4)-Xss128k:设置每个线程的栈大小。JDK5.0后每个线程大小为1M;
    5)-XX:NewRatio=4:设置年轻代(Eden和2个Survivor区)与老年代的比值(不包含持久代),设置=4,则年轻代:老年代=1:4,年轻代占整个堆栈的1/5;
    6)-XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的比值,设置=4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6
    7)-XX:MaxPermSize=16m:设置持久代为16m;
    8)-XX:MaxTenuringThreshold=0;设置垃圾最大年龄;

    串行收集器

    1)-XX:+UseSerialGC:串行收集器,在整个扫描和复制过程采用单线程的方式来进行,适用于单CPU、新生代空间较小及对暂停时间要求不是非常高的应用上,是client级别默认的GC方式,JDK1.5之前;

    并行收集器

    1)-XX:+UseParallelGC:并行收集器(吞吐量邮箱),即在整个扫描和复制过程采用多线程的方式进行,适用于多CPU、对暂停时间要求较短的应用上,是server级别默认采用的GC方式。仅对年轻代有效。
    2)-XX:ParallelGCThreads=4:配置并行收集器的线程数,即同事多少个线程一起进行垃圾回收。建议配置成处理器数目;
    3)-XX:+UseParallelOldGC:配置年老代垃圾收集方式并行收集。JDK6.0支持对年老代并行收集;
    4)-XX:MaxGCPauseMillis=100:设置每次年轻代垃圾回收的最长时间,如果无法满足此时间,JVM会自动调整年轻代大小;
    5)-XX:+UseAdaptiveSizePolicy:并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低相应时间或者收集频率等;

  • 相关阅读:
    HTML
    数据挖掘之分类——基于规则的分类器
    Ubuntu 14.04下Hadoop2.4.1集群安装配置教程
    Jdk1.7+eclipse搭建Java开发环境
    约瑟夫环问题
    Linux 绝对路径与相对路径
    排序算法汇总
    朋友圈问题
    HTTP状态码
    哈希冲突,哈希函数
  • 原文地址:https://www.cnblogs.com/Andya/p/12445244.html
Copyright © 2011-2022 走看看