站在人群,我毫不起眼;活在世上,我不玩心眼!

没有那么远大的目标,但是也不要把我当成傻子!

--胖先生

放在前面要说的话:
JVM内存分配设置的参数有四个

-Xmx Java Heap最大值,默认值为物理内存的1/4

-Xms Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;

-Xmn Java Heap Young区大小,不熟悉最好保留默认值;

-Xss 每个线程的Stack大小,不熟悉最好保留默认值;

-XX:PermSize:设定内存的永久保存区域;

-XX:MaxPermSize:设定最大内存的永久保存区域;

-XX:PermSize:设定内存的永久保存区域;

-XX:NewSize:设置JVM堆的'新生代'的默认大小;

-XX:MaxNewSize:设置JVM堆的'新生代'的最大大小;

参考: http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html

  • Eclipse中设置JDK的内存方式

    为什么要设置JDK的内存呢?

    方式一:有可能的情况是Tomcat的内存溢出了,我需要设置如下的参数[关于下面的设置,需要根据你电脑的内存地址来设置]

-Xms512M -Xmx1024M -XX:PermSize=512m -XX:MaxPermSize=1024m

对JDK的内存设置操作过程如下

效果如下:

但是我发现,启动时间别配置之前慢了一些

方式二:增加JDK的内存的方法,直接在jdk下面的optional java vm arguments; 设置参数

  • 当你感觉你的Eclipse启动数据比较慢的时候,可以设置如下的属性

    如果使用eclipse的话,那么在解压的根目录中找到eclipse.ini

    如果使用sts的话,那么在根目录中找到STS.ini

-vmargs

-Xms128M

-Xmx512M

-XX:PermSize=64M

-XX:MaxPermSize=128M

:这里的所有的JVM的参数是有设定规则的,补充内容中含有

  • 增加Tomcat的内存方式

    tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。

  • linux下,在文件{tomcat_home}/bin/catalina.sh的前面,增加如下设置:

    SET JAVA_OPTS=-Xms512m -Xmx1024m

  • windows下,在tomcat_home}/bin/catalina.bat的前面,增加如下设置:

    SET JAVA_OPTS=-Xms512m -Xmx1024m

    :表示初始化内存为512MB,可以使用的最大内存为1024MB

  • 对Tomcat的优化操作[来源自网络]

    (1) 在bin/catalina.bat文件中加入下面参数,对JVM进行优化,至于这一大驼参数的作用及说明,
    请查看文档: http://www.mzone.cc/article/321.html

JAVA_OPTS="-server -showversion -Xms1000M -Xmx1000M -XX:PermSize=256m -XX:MaxPermSize=256m"

JAVA_OPTS="$JAVA_OPTS -d64 -XX:CICompilerCount=8 -XX:+UseCompressedOops"

JAVA_OPTS="$JAVA_OPTS -XX:SurvivorRatio=4 -XX:TargetSurvivorRatio=90"

JAVA_OPTS="$JAVA_OPTS -XX:ReservedCodeCacheSize=256m -XX:-UseAdaptiveSizePolicy"

JAVA_OPTS="$JAVA_OPTS -Duser.timezone=Asia/Shanghai -XX:-DontCompileHugeMethods"

JAVA_OPTS="$JAVA_OPTS -Xss256k -XX:+AggressiveOpts -XX:+UseBiasedLocking"

JAVA_OPTS="$JAVA_OPTS -XX:MaxTenuringThreshold=31 -XX:+CMSParallelRemarkEnabled "

JAVA_OPTS="$JAVA_OPTS -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=256m -XX:+UseFastAccessorMethods"

JAVA_OPTS="$JAVA_OPTS -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true"

JAVA_OPTS="$JAVA_OPTS -XX:+UseGCOverheadLimit -XX:AllocatePrefetchDistance=256 -XX:AllocatePrefetchStyle=1"

JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:MaxGCPauseMillis=200"

上述这样的配置,基本上可以达到:

  • 系统响应时间增快
  • JVM回收速度增快同时又不影响系统的响应率
  • JVM内存最大化利用
  • 线程阻塞情况最小化

-Xms=-Xmx=服务器内存*70%
如部署tomcat,jboss在同一台服务器 -Xms=-Xmx=服务器内存*80%*1/4

(2) Tomcat连接参数的优化,主要是针对吞吐量做优化:

修改conf/server.xml文件,把原来

<Connector port="8080" protocol="HTTP/1.1" />

修改内容如下:

<Connector port="8080" protocol="HTTP/1.1"

URIEncoding="UTF-8"

minSpareThreads="25"

maxSpareThreads="75"

enableLookups="false"

disableUploadTimeout="true"

connectionTimeout="20000"

acceptCount="300"

maxThreads="300"

maxProcessors="1000"

minProcessors="5"

useURIValidationHack="false"

compression="on"

compressionMinSize="2048"

compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"

redirectPort="8443"/>

一段补充说明:

搜索【<Executor name="tomcatThreadPool"】,开启并调整为

<Executor

name="tomcatThreadPool"

namePrefix="catalina-exec-"

maxThreads="1000"

maxIdleTime="60000"

minSpareThreads="20"/>

搜索【port="8080"】,调整为

<Connector

port="8080"

executor=" tomcatThreadPool" //开启线程池

protocol="org.apache.coyote.http11. Http11AprProtocol" //我们没有安装: 开启Apr协议,需要安装Apr支持 maxHttpHeaderSize="8192"

maxThreads="1000"

processorCache="1000"

acceptCount="1000"

minSpareThreads="100"

acceptorThreadCount="8"

URIEncoding="UTF-8"

enableLookups="false"

redirectPort="8443" //关闭反向查询

connectionTimeout="120000"

keepAliveTimeout="120000"

maxKeepAliveRequests="65535"

disableUploadTimeout="true"

compression="on"

compressionMinSize="4096" //开启静态文件压缩

noCompressionUserAgents="gozilla, traviata" //开启静态文件压缩

compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,application/json,appli cation/x-javascript " //开启静态文件压缩

/>

可以通过java/jdk/bin下的java visualVM查看eclipse的内存大小和tomcat的内存大小,主要看堆,PermGen两个大小,如图:

胖先生的微信

感觉该文章对你有所帮助,请点击下方的
推荐↓↓↓↓↓↓↓↓↓↓
您的支持是我最大的动力

支付宝包扫一扫

谢谢两位,小伟的支持

    

第05篇. Tomcat和JDK的内存配置的更多相关文章

  1. Tomcat和JDK的内存配置

    1.jvm内存管理机制: 1)堆(Heap)和非堆(Non-heap)内存 按照官方的说法:"Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配.堆是在 Ja ...

  2. 2、MyEclipse和Eclipse调优,MyEclipse配置(tomcat和jdk的内存设置),jar引入相关知识点,将Java项目编程web项目的办法

    1.WindowàPreferenceàGeneralàWorkspaceàText file encoding都改成UTF-8 2.WindowàPreferenceàGeneralàEdito ...

  3. Tomcat和JVM的内存配置

    原文路径:https://www.cnblogs.com/pangxiansheng/p/5378537.html JVM内存分配设置的参数有四个 -Xmx Java Heap最大值,默认值为物理内存 ...

  4. tomcat 端口修改和内存配置

    端口号修改参考:https://jingyan.baidu.com/article/adc815139b12def722bf7377.html Tomcat内存溢出(windows) java.lan ...

  5. 随手记:tomcat 与JDK 安装与配置

    写了3年的JAVA 每次遇到配置JDK 与按照tomcat的时候都要去网上找一下,太丢人了,所以还是记一下比较好,虽然都知道要配置哪些,但每次都还是有些不确定的感觉~ JDK : 1.安装官网 htt ...

  6. JDK + Tomcat 安装 + 制作自定义镜像【第 2 篇 Tomcat】

    [第 1 篇 JDK]:https://www.cnblogs.com/del88/p/11842387.html[第 2 篇 Tomcat]:https://www.cnblogs.com/del8 ...

  7. 运行两个以上tomcat的设置及内存设置

    运行两个或以上tomcat的设置方法 1.解决端口冲突问题设置方法很简单,修改conf/server.xml配置文件中的3个端口即可.默认端口:8005.8080.8009.一般情况位置如下:**** ...

  8. Linux 下修改Tomcat使用的JVM内存大小

    我的服务器的配置: # OS specific support.  $var _must_ be set to either true or false. JAVA_OPTS="-Xms10 ...

  9. 打包mysql、tomcat、jdk为一个软件

    打包mysql.tomcat.jdk为一个软件 博客分类: 成长中的点滴  . 我们在本地开发web应用的时候,直接在IDE里面就可以完成jdk.容器.数据库的配置和集成. 但是如果当我们把应用程序交 ...

随机推荐

  1. strcpy函数实现

    1,strcpy最简便实现 char * strcpy_to (char *dst, const char *src) { char *address = dst; assert((dst != NU ...

  2. 原生js验证简洁美观注册登录页面

    序 一个以js验证表单的简洁的注册登录页面,不多说直接上图 效果 主要文件 完整代码 sign_up.html 注册表单 <!DOCTYPE html> <html lang=&qu ...

  3. Form.action传值问题

    通过浏览器地址栏输入url并通过?传递参数请求资源时,?后面的参数叫做 "查询字符串",会触发后台Servlet的doGet(),因为通过浏览器地址栏直接访问的方式是GET方式. ...

  4. HTML 5 中的标准属性

    HTML 全局属性 HTML 属性赋予元素意义和语境. 下面的全局属性可用于任何 HTML 元素. (5)= HTML5 中添加的属性. 属性 描述 accesskey 规定激活元素的快捷键. cla ...

  5. jQuery源码分析-01总体架构

    1. 总体架构 1.1自调用匿名函数 self-invoking anonymous function 打开jQuery源码,首先你会看到这样的代码结构: (function( window, und ...

  6. 【读书笔记】iOS-写代码注意事项

    一,我是尽早和经常编译的强烈支持者.通常,在写完每个方法或有点难度的代码后,都要尝试进行构建.这是一个好习惯,因为如果在上次成功编译以来添加的代码量很小,那么可以非常容易地缩小编译错误范围.这个方法还 ...

  7. 优于CoreData的Realm数据库基础教程

    Realm 是一个跨平台的移动数据库引擎,于 2014 年 7 月发布,准确来说,它是专门为移动应用所设计的数据持久化解决方案之一. Realm 可以轻松地移植到您的项目当中,并且绝大部分常用的功能( ...

  8. iOS网络-03-NSURLSession与NSURLSessionTask

    简介 NSURLSession也能完成网络请求 NSURLConnection在iOS9中不推荐使用,NSURLSession是iOS9中推荐使用的网络请求方式 NSURLSession需要与NSUR ...

  9. LeetCode 3 Longest Substring Without Repeating Characters(最长不重复子序列)

    题目来源:https://leetcode.com/problems/longest-substring-without-repeating-characters/ Given a string, f ...

  10. javascript 定时器

    setTimeout()--用于指定在一段特定的时间后执行某段程序.           格式: [定时器对象名=]setTimeout("<表达式>",毫秒数); 功 ...