如何tomcat jvm内存设置jvm内存

JVM在大内存服务器上怎么充分利用硬件资源 - 讨论 - 高级语言虚拟机 - ITeye群组
& 上一页 1
1、在大内存服务器上(比如32G),JVM怎么充分利用内存了?
单机多集群?单JVM,大的堆内存?或者其他?
2、假如采用设置大的堆内存,比如(20G以上),怎么控制FULL GC的发生时间及频率,以避免FULL GC时对应用造成停顿?
单独任务晚上跑System.gc?
shuhucy 写道1、在大内存服务器上(比如32G),JVM怎么充分利用内存了?
单机多集群?单JVM,大的堆内存?或者其他?
2、假如采用设置大的堆内存,比如(20G以上),怎么控制FULL GC的发生时间及频率,以避免FULL GC时对应用造成停顿?
单独任务晚上跑System.gc?
目前通用的解决办法,还是单机多集群。
xm_king 写道shuhucy 写道1、在大内存服务器上(比如32G),JVM怎么充分利用内存了?
单机多集群?单JVM,大的堆内存?或者其他?
2、假如采用设置大的堆内存,比如(20G以上),怎么控制FULL GC的发生时间及频率,以避免FULL GC时对应用造成停顿?
单独任务晚上跑System.gc?
目前通用的解决办法,还是单机多集群。
同意,一般都是开几个虚拟机,然后集群。
那就是目前直接配置单机大内存并没有很多的实际应用,配置单机大内存的主要问题在什么地方了?单机多集群,目前主要是配置32位JDK的好,还是64未JDK的好?
这贴子就是热门讨论?
64位比32位稍慢,但是内存吞吐量更大。还是建议使用64位,至少硬件和软件上不会有内存的限制,内存不够用了,增加内存就可以了。尽量不要调用System.gc(),它会触发fullgc,而fullgc的频率应该是尽量降低的。尽管有些第三方库调用了它,还是不推荐在应用逻辑或业务逻辑内调用它。如果重视实时性,建议分配较小的堆,单机运行多个jvm进程。采用标记清除算法,并打开内存压缩开关,指定gc线程数最多是cpu核心数,使用并行回收算法回收年轻代,年轻代尽量大,保证绝大多数对象都在年轻代回收,适当增加对象在幸存区的复制次数,减少fullgc次数和降低fullgc造成的停顿。注意控制PermGen大小,可通过反复测试找到整个应用使用的最大PermGen值,最终确定的值只需要比测试时验证的值稍大即可。适当减少线程栈内存尺寸,增加每进程可支持的线程数。如果重视吞吐量,对实时性没有要求,可以运行单机单jvm进程,采用大堆。注意新生代与年老代的比例,伊甸区与幸存区的比例,这两个比例。如果使用了jdk7,可以尝试下G1算法,它是目前最快的gc算法。注意,不论是重视实时性还是重视数据吞吐量,所有jvm进程堆内存最好不要超过物理内存的3/4,根据操作系统内运行的服务数量和其它进程占用的内存这一数字还需要调整。如果服务器只运行同样的java服务,3/4是个不错的参考数字。如果是作为服务器可在启动jvm时增加-server参数,这个参数针对服务器有些默认优化,可在此基础上基于测试结果和线上运行结果做针对性优化。另外,作为服务器的话,将最大堆和最小堆的值设为一样大,节省不断调整堆尺寸的cpu开销。参数不明白的可以上网查,本人认为比较重要的几个参数是:-Xms -Xmx -Xmn MaxTenuringThreshold GCTimeRatio UseConcMarkSweepGC CMSInitiatingOccupancyFraction SoftRefLRUPolicyMSPerMB
shuhucy 写道那就是目前直接配置单机大内存并没有很多的实际应用,配置单机大内存的主要问题在什么地方了?
单机多集群,目前主要是配置32位JDK的好,还是64未JDK的好?
单机大内存,主要问题是如果发生GC的话,那就会消耗非常大的时间
xm_king 写道shuhucy 写道1、在大内存服务器上(比如32G),JVM怎么充分利用内存了?
单机多集群?单JVM,大的堆内存?或者其他?
2、假如采用设置大的堆内存,比如(20G以上),怎么控制FULL GC的发生时间及频率,以避免FULL GC时对应用造成停顿?
单独任务晚上跑System.gc?
目前通用的解决办法,还是单机多集群。
不如用用The Zing(TM) JVM看?目前已免费:/products/zing/virtual-machine被称为C4(Continuously Concurrent Compacting Collector)垃圾回收,可支持高达512GB的堆空间,进行无停顿的垃圾回收,并且可以根据负载扩展或收缩堆空间。没什么工业经验,纯属抛砖引玉
xm_king 写道shuhucy 写道那就是目前直接配置单机大内存并没有很多的实际应用,配置单机大内存的主要问题在什么地方了?
单机多集群,目前主要是配置32位JDK的好,还是64未JDK的好?
单机大内存,主要问题是如果发生GC的话,那就会消耗非常大的时间
而且转储文件应该也是没法分析的
所以实际上使用大内存问题在于需要保证程序的稳定性,逻辑上没有问题,整个应用系统应该也没有问题(有些系统采用ZK,MQ的,如果一些重试机制没处理好,易产生内存溢出)
如果使用大内存而出现内存溢出,定位应该很困难了
目前正在处理的一个实际系统,配置20G内存,性能压力测试期间,跑了几天的稳定性测试,通过VisualVM查看垃圾回收情况,发现old区基本正常,保持一个较低使用水平,没有发生过一次full gc。不过依然建议线上64位服务器上,采用单机多集群方式,但堆内存建议在4-6G区间
采用大内存时,垃圾回收采用迸发收集器,个人觉得年龄阀值可以配置大写,比如8,默认是4,因为在压力测试区间,发现年龄阀值为4时,old区增长还是较快的
& 上一页 1林辉:如何设置JVM内存设置
全部答案(共6个回答)
设置:D:\Program Files\Apache Software Foundation\Tomcat 6.0\bin下打开tomcat6w.exe,切换到java选项卡在Java Options选项的最后面加入(这个和修改注册表的效果一样):-XX:PermSize=256M-XX:MaxPermSize=386m-Xms1024m-Xmx1024m(...
tomcat下的JVM相关信息设置:D:\Program Files\Apache Software Foundation\Tomcat 6.0\bin下打开tomcat6w.exe,切换到java选项卡在Java Options选项的最后面加入(这个和修改注册表的效果一样):-XX:PermSize=256M-XX:MaxPermSize=386m-Xms1024m-Xmx1024m(后面都不能有空格哦,不然会报错,一般情况下PermSize和Xmx之和不能超过1.5G)
1. 设置JVM内存的参数有四个:
Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;
Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;
Java Heap Young区大小,不熟悉最好保留默认值;
每个线程的Stack大小,不熟悉最好保留默认值;
1. JVM内存分配设置的参数有四个:
Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;
Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;
Java Heap Young区大小,不熟悉最好保留默认值;
每个线程的Stack大小,不熟悉最好保留默认值;
2. 如何设置JVM的内存分配:
(1)当在命令提示符下启动并使用JVM时(只对当前运行的类Test生效):
java -Xmx128m -Xms64m -Xmn32m -Xss16m Test
(2)当在集成开发环境下(如eclipse)启动并使用JVM时:
a. 在eclipse根目录下打开eclipse.ini,默认内容为(这里设置的是运行当前开发工具的JVM内存分配):
-vmargs表示以下为虚拟机设置参数,可修改其中的参数值,也可添加-Xmn,-Xss,另外,eclipse.ini内还可以设置非堆内存,如:-XX:PermSize=56m,-XX:MaxPermSize=128m。
此处设置的参数值可以通过以下配置在开发工具的状态栏显示:
在eclipse根目录下创建文件options,文件内容为:org.eclipse.ui/perf/showHeapStatus=true
修改eclipse根目录下的eclipse.ini文件,在开头处添加如下内容:
重新启动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程序生效):
建议先不要写JSP,先把Java的一些基础知识了解一下如果看帮助的话,可以看JDK的文档,所有的包、类、接口都有,现在还有一些翻译的JDK的帮助文档,可以用go...
看你安装java的目录在哪里,找到后直接打开就行了。
.DataInputSimport
.IOEimport
.HttpURLCimport ...
答: 问下有关jalan订房问题
答: 这个要设计到JNI的开发,就是用Java来调用C语言的函数库,还要编写缓冲器来解决传输问题,还有就是网络协议一定要了解,做的时候要用多线程来控制你所有的缓冲器,...
答: 所谓的网络编程,不论c还是java,本质上都是通过socket进行数据传输;一般情况下可以使用的传输协议有tcp、udp、ftp等等,这些协议为网络变成提供基本...
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:123456789101112131415JVM内存溢出
设置Java Application的内存 -
- ITeye博客
博客分类:
在Eclipse单独用Java Application 运行类程序时经常会出现out of memory(内存溢出)的情况,导致无法获取我们想要的数据,搜索解决的方式分享一下:
Eclipse未汉化:
打开选择Project---&Properties---&Run/Debut Settings 然后选择你想要运行的程序,点击"Edit"按钮,选择 "Arguments" , 在"VM arguments"中输入你想要设置的内存大小,例如:“-Xms256m -Xmx512m”
Eclipse汉化之后的方式为:
项目-属性-运行调试设置-编辑配置-自变量-VM自变量-设置内存
注意:前面一个代表初始化,后面一个代表最大值
浏览: 118406 次
来自: 西安
很有用,谢谢分享啦!jvm虚拟内存应该如何设置?_电脑网络问题_土巴兔问吧
jvm虚拟内存应该如何设置?
输入手机号码,报价结果将发送到您手机
装修顾问-馨馨
4年行业经验,24h可咨询
10秒闪电通过好友
报价短信已发送到您的手机
因材料品牌及工程量不同,具体报价以量房实测为准
稍候装修管家将回电您,免费提供装修咨询服务
您的装修预算约
*装修管家将回电您,免费提供装修咨询服务
*装修管家将回电您,免费提供装修咨询服务
*因材料品牌及工程量不同,具体报价以量房实测为准
装修顾问 -馨馨
(四年装修行业经验)
微信扫一扫
3.&您家小区名称 :&&
请选择您家的装修时间
jvm虚拟内存应该如何设置?
提问者:严嘉茂|
时间: 13:05:22
已有3条答案
回答数:5247|被采纳数:4
所有回答:&5247
您好,设置虚拟内存方法:1、用右键点击桌面上的“我的电脑”图标,在出现的右键菜单中选择“属性”选项打开“系统属性”窗口。在窗口中点击“高级”选项卡,出现高级设置的对话框。
2、点击“性能”区域的“设置”按钮,在出现的“性能选项”窗口中选择“高级”选项卡,打开其对话框。
3、在该对话框中可看到关于虚拟内存的区域,点击“更改”按钮进入“虚拟内存”的设置窗口。选择一个有较大空闲容量的分区,
4、勾选“自定义大小”前的复选框,将具体数值填入“初始大小”、“最大值”栏中,而后依次点击“设置→确定”按钮即可,最后重新启动计算机使虚拟内存设置生效。
希望我的回答对您有所帮助,望采纳。
回答数:94500|被采纳数:76
所有回答:&94500
设置办法:到桌面“计算机”图标,右键“属性”或者直接找到“控制面板”--“系统和安全”--“系统”菜单功能出现的,关于计算机菜单中。找到“高级系统设置”选项(如果是XP系统就直接到下一步操作了)出现的“系统属性”窗口中,找到“高级”---“设置”。
回答数:21545|被采纳数:6
所有回答:&21545
<p class="ask_one_p edit_、内存的设定主要根据你的内存大小和电脑的用途来设定。所谓虚拟内存就是在你的物理内存不够用时把一部分硬盘空间所为内存来使用,不过由于硬盘传输的速度要比内存传输速度慢的多,所以使用虚拟内存比物理内存效率要慢。个人实际需要的值应该自己多次调整为好。
设的太大会差生大量的碎片,严重影响系统速度,设的太小就不够用,于是系统就会提示你虚拟内存太小。
2、一般情况下,可让Windows来自动分配管理虚拟内存,它能根据实际内存的使用情况,动态调整虚拟内存的大小。
3、定义虚拟内存,一般默认的虚拟内存大小是取一个范围值,最好给它一个固定值,这样就不容易产生磁盘碎片,具体数值根据你的物理内存大小来定,一般为物理内存的1.5--3倍;但也可最小值设为物理内存的1.5--2倍,最大值为物理内存的2--3倍。
4、拟内存最好不要与系统设在同一分区内,内存是随着使用而动态地变化,C盘就容易产生磁盘碎片,影响系统运行速度,所以,最好将虚拟内存设置在其它分区中磁盘剩余空间较大而又不常用的盘中,如D、F,这样可以避免系统在此分区内进行频繁的读写操作而影响系统速度。拟内存在一台电脑中,只能是一个,可放在磁盘的任何一个分区中。
5、置虚拟内存的方法是:右击我的电脑—属性--高级--性能设置--高级--虚拟内存更改--点选C盘--单选“无分页文件(N)”--“设置”,此时C盘旁的虚拟内存就消失了;然后选中D盘,单选“自定义大小”--在下面的“初始大小”和“最大值”两个文本框中输入数值--“设置”—确定--重启,便完成了设置。
希望我的回答能帮助到你
已有 3 个回答
已有 3 个回答
已有 3 个回答
已有 3 个回答
已有 3 个回答
北欧简约、复古美式、大气欧式、清新地中海风,总有一款适合你!
一万套装修案例Java虚拟机内存参数设置Java虚拟机内存参数设置关于Java虚拟机内存设置的详细方法请参考此文:。这里罗列出了几个较为关键的内存参数如下:Table 5.1. JVM(Java Virtual Machine)内存参数设置JVM选项含义-Xms初始Heap大小-XmxJava Heap最大值-XmnYoung Generation的Heap大小-Xss每个线程的Stack大小一般在server端的应用程序上面设置-Xms 跟 -Xmx的值一致将有效提升应用程序的性能。
-Xms小于等于-Xmx的值。可以通过修改amoeba的启动脚本来设置Java虚拟机内存参数:Example 5.1. 设置Amoeba启动脚本来调整内存参数在Amoeba的启动脚本中找到DEFAULT_OPTS变量所在的行。如果你使用linux则脚本文件是bin目录下的amoeba、使用Windows则脚本文件时bin目录下的amoeba.bat...
DEFAULT_OPTS="-Xmx1024m -Xms1024m -Xss256k"
...将DEFAULT_OPTS设置如上将使得JVM获得更大的内存从而提升Amoeba的性能。有些用户反映无法修改线程堆栈大小,主要原因是操作系统的限制,Linux系统可以通过命令行执行或者在启动脚本/etc/profile文件中添加:
ulimit -s 2048。

我要回帖

更多关于 抽象类和接口的区别 的文章

 

随机推荐