tomcat设置java jvm参数 优化

编辑器加载中...

一、jvm内存的设置的原理

默认的java 虚拟机的大小比较小,在对大数据进行处理时java 就会报错:java .lang.outofmemoryerror。

设置jvm内存的方法,对于单独的.class,可以用下面的方法对test运行时的jvm内存进行设置。

java -xms64m -xmx256m test

-xms是设置内存初始化的大小

-xmx是设置最大能够使用内存的大小(最好不要超过物理内存大小)

二、jvm内存分配设置

1. jvm内存分配设置的参数有四个:

-xmxjava heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;

-xmsjava heap初始值,server端jvm最好将-xms和-xmx设为相同值,开发测试机jvm可以保留默认值;

-xmnjava heap young区大小,不熟悉最好保留默认值;

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

2. 如何设置jvm的内存分配:

(1)当在命令提示符下启动并使用jvm时(只对当前运行的类test生效):

java -xmx128m -xms64m -xmn32m -xss16m test

(2)当在集成开发环境下(如eclipse)启动并使用jvm时:

a. 在eclipse根目录下打开eclipse.ini,默认内容为(这里设置的是运行当前开发工具的jvm内存分配):

-vmargs

-xms40m

-xmx256m

-vmargs表示以下为虚拟机设置参数,可修改其中的参数值,也可添加-xmn,-xss,另外,eclipse.ini内还可以设置非堆内存,如:-xx:permsize=56m,-xx:maxpermsize=128m。

此处设置的参数值可以通过以下配置在开发工具的状态栏显示:

在eclipse根目录下创建文件options,文件内容为:org.eclipse.ui/perf/showheapstatus=true

修改eclipse根目录下的eclipse.ini文件,在开头处添加如下内容:

-debug

options

-vm

javaw.exe

重新启动eclipse,就可以看到下方状态条多了jvm信息。

b. 打开eclipse-窗口-首选项-java-已安装的jre(对在当前开发环境中运行的java程序皆生效)

编辑当前使用的jre,在缺省vm参数中输入:-xmx128m -xms64m -xmn32m -xss16m

c. 打开eclipse-运行-运行-java应用程序(只对所设置的java类生效)

选定需设置内存分配的类-自变量,在vm自变量中输入:-xmx128m -xms64m -xmn32m -xss16m

注:如果在同一开发环境中同时进行了b和c设置,则b设置生效,c设置无效,如:

开发环境的设置为:-xmx256m,而类test的设置为:-xmx128m -xms64m,则运行test时生效的设置为:

-xmx256m -xms64m

(3)当在服务器环境下(如tomcat)启动并使用jvm时(对当前服务器环境下所以java程序生效):

a. 设置环境变量:

变量名:catalina_opts

变量值:-xmx128m -xms64m -xmn32m -xss16m

b. 打开tomcat根目录下的bin文件夹,编辑catalina.bat,在set java_opts=%java_opts%....这句之后加上:set java_opts=%java_opts% -xms1024m -xmx1024m

c、若没有catalina.bat,只有tomcat.exe,tomcat6w.exe;则可以在启动tomcat6w.exe 后 右键配置--java--java option 下面输入:

-xmx256m

-xms64m

也可以找到注册表hkey_local_machine/software/apache software foundation/tomcat service manager/tomcat6/parameters/javaoptions

原值为

-dcatalina.home="c:/apachegroup/tomcat 6.0"

-djava.endorsed.dirs="c:/apachegroup/tomcat 6.0/common/endorsed"

-xrs

加入

-xms300m

-xmx350m

重起tomcat服务,设置生效

三、查看jvm内存信息

runtime.getruntime().maxmemory(); //最大可用内存,对应-xmx

runtime.getruntime().freememory(); //当前jvm空闲内存

runtime.getruntime().totalmemory(); //当前jvm占用的内存总数,其值相当于当前jvm已使用的内存及freememory()的总和

关于maxmemory(),freememory()和totalmemory():

maxmemory()为jvm的最大可用内存,可通过-xmx设置,默认值为物理内存的1/4,设值不能高于计算机物理内存;

totalmemory()为当前jvm占用的内存总数,其值相当于当前jvm已使用的内存及freememory()的总和,会随着jvm使用内存的增加而增加;

freememory()为当前jvm空闲内存,因为jvm只有在需要内存时才占用物理内存使用,所以freememory()的值一般情况下都很小,而 jvm实际可用内存并不等于freememory(),而应该等于maxmemory()-totalmemory()+freememory()

==============================================================================

set java_opts=-server -dsun.io.usecanoncaches=false -xms1024m -xmx1024m -xx:permsize=128m -xx:maxpermsize=256m -xx:+aggressiveheap -xx:+useparallelgc

rem set java_opts=-server -xmx1024m -xms1024m -xx:+aggressiveheap -xx:+useparallelgc -dsun.io.usecanoncaches=false -xx:maxpermsize=512m


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tomcat中的JVM优化是指对Java虚拟机的调优,以提高Tomcat服务器的性能和稳定性。根据引用[1],TomcatJVM优化主要包括以下几个方面: 1. 内存设置:通过调整JVM的堆内存大小,可以提高Tomcat的性能。可以通过修改Tomcat根目录下的bin目录中的catalina.sh(Linux)或catalina.bat(Windows)文件来设置JVM的内存参数,如-Xms和-Xmx参数分别用于设置JVM的初始堆大小和最大堆大小。 2. 垃圾回收设置:垃圾回收是JVM的重要功能,可以通过调整垃圾回收算法和参数优化Tomcat的性能。可以使用-Xloggc参数来指定垃圾回收日志文件的路径,以便进行分析和调优。 3. 线程池设置Tomcat使用线程池来处理客户端请求,可以通过调整线程池的大小和配置来优化Tomcat的性能。可以修改Tomcat根目录下的conf目录中的server.xml文件,通过修改Connector元素的属性来设置线程池的参数,如maxThreads和minSpareThreads。 4. 连接设置:可以通过调整Tomcat的连接参数优化Tomcat的性能。例如,可以设置maxKeepAliveRequests属性来限制每个连接的最大请求数,以避免产生大量的TIME_WAIT连接。 需要注意的是,JVM优化需要根据具体的应用场景和硬件环境进行调整,不同的应用可能需要不同的优化策略。建议在进行JVM优化之前,先进行性能测试和监测,以便确定需要进行的优化方向和参数调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值