java动力节点如何给weblogic指定大小的内存
Java虚拟机JVM各调优参数说明
Java虚拟机JVM各调优参数说明Java虚拟机(JVM)是Java程序运行的环境,它负责将Java源代码编译为字节码,并在运行时执行这些字节码。
JVM的性能对于Java应用程序的性能至关重要。
为了优化JVM的性能,我们可以通过调整一些参数来改变其行为。
下面是JVM各调优参数的详细说明。
1. -Xms和-Xmx:这两个参数用于设置JVM的初始堆大小和最大堆大小。
初始堆大小表示JVM在启动时申请的内存大小,最大堆大小表示JVM所能申请的最大内存大小。
可以使用以下命令设置初始堆大小为1GB,最大堆大小为2GB:-Xms1g -Xmx2g。
2. -XX:NewSize和-XX:MaxNewSize:这两个参数用于设置新生代的初始大小和最大大小。
新生代是JVM堆的一部分,用于存放新创建的对象。
可以使用以下命令设置新生代的初始大小为256MB,最大大小为512MB:-XX:NewSize=256m -XX:MaxNewSize=512m。
3. -XX:SurvivorRatio:这个参数用于设置新生代中Eden区和Survivor区的比例。
Eden区是新对象的分配区域,Survivor区是用于存放幸存的对象的区域。
可以使用以下命令设置Eden区和Survivor区的比例为8:1:-XX:SurvivorRatio=84. -XX:MaxTenuringThreshold:这个参数用于设置对象在Survivor区中的最大年龄。
当对象在Survivor区中存活的时间超过这个阈值时,它将被晋升到老年代。
可以使用以下命令设置最大年龄为15:-XX:MaxTenuringThreshold=155. -XX:PermSize和-XX:MaxPermSize:这两个参数用于设置永久代的初始大小和最大大小。
永久代用于存放类的元数据、静态变量和常量池等信息。
可以使用以下命令设置永久代的初始大小为128MB,最大大小为256MB:-XX:PermSize=128m -XX:MaxPermSize=256m。
WebLogic10设置虚拟内存大小
WebLogic10设置虚拟内存大小对 JRockit JVM 优化 Task Options CommentsSetting the Nursery -Xns 尽力使Nursery 最够大,来减少GC 停顿时间。
最大最好不要超过最大Heap 95%。
Setting minimum heap size -XmsBEA 推荐这个值最好等于最大的heap 。
Setting maximum heap size -XmxHeap 最大值,当然越大越好。
Setting garbage collection -Xgc: parallelPerforms adaptive optimizations asearly as possible in the Javaapplication run.-XXaggressive:memoryFor example $ java -Xns10m -Xms512m -Xmx512m对 SUN JVM 优化TaskOptions Comments Setting the New generation heap size -XX:NewSize默认 NewSize 大小是Heap 的四分之一,类似Nursery ,尽量设置大点减少GC 停顿时间。
Setting the -XX:MaxNewSize设置 New Generation heap 最大值.maximum New generation heap sizeSetting Newheap size ratios -XX:SurvivorRatio在Sun generation分为3个区域,一个Edgn和两个survivors。
该值是设置Edgn与Surviors的比例。
最好设置为8.Settingminimum heapsize-Xms 推荐这个值最好等于最大的heap。
Setting BigHeaps and Intimate Shared Memory -XX:+UseISM-XX:+AggressiveHeapSee/docs/hotspot/ism.htmlSettingmaximum heapsize-Xmx Heap最大值,当然越大越好。
Weblogic性能调优经验
Weblogic性能调优经验WEBLOGIC性能调优方案1.查看当前线程池大小:登录WEBLOGIC控制台,选择服务器-某服务器-监视-性能,可查看到当前最大线程数量。
由于WEBLOGIC9取消了在页面进行调整线程大小的功能,需要在后台进行修改。
2.修改线程池大小:进入服务器的目录D:\bea\user_projects\domains\base_domain\config,使用编辑器打开config.xml文件,找到如下段落:<server><name>AdminServer</name><listen-address>168.5.130.34</listen-address>z</server>在</server>上面添加如下两行:默认10<self-tuning-thread-pool-size-min>1000</self-tuning-thread-pool-siz e-min><self-tuning-thread-pool-size-max>1000</self-tuning-thread-pool-siz e-max>添加后的结果:<server><name>AdminServer</name><listen-address>168.5.130.34</listen-address><self-tuning-thread-pool-size-min>1000</self-tuning-thread-pool-size-min><self-tuning-thread-pool-size-max>1000</self-tuning-thread-pool-size-max></server>按上面的步骤,继续找到ProxyServer,以及所有MANAGE受管机的<server>段落,分别添加上面的两行语句。
weblogic优化指南
优化WebLogic一、为WebLogic启动设置Java参数垃圾收集(GC)是指JVM释放Java堆中不再使用的对象所占用的内存的过程,而Java堆(Heap)是指Java应用程序对象生存的空间。
堆大小决定了GC的频度和时间。
堆越大,GC频度低,速度慢。
堆越小,GC频度高,速度快。
所以GC和堆大小是一组矛盾。
为了获取理想的Heap堆大小,需要使用-verbosegc参数(Sun jdk: -Xloggc:<file>)以打开详细的GC输出。
分析GC的频度和时间,结合应用最大负载所需内存情况,得出堆的大小。
通常情况下,我们建议使用可用内存(除操作系统和其他应用程序占用之外的内存)70-80%,为避免堆大小调整引起的开销,设置内存堆的最小值等于最大值即:-Xms=-Xmx。
而为了防止内存溢出,建议在生产环境堆大小至少为256M(Platform至少512M),实际环境中512M~1G左右性能最佳,2G以上是不可取的,在调整内存时可能需要调整核心参数进程的允许最大内存数。
对于sun 和hp的jvm,永久域太小(默认4M)也可能造成内存溢出,应增加参-XX:MaxPermSize=128m。
建议设置临时域-Xmn的大小为-Xmx的1/4~1/3, SurvivorRatio为8堆栈内存优化,修改配置文件:WL_HOME=C:\bea\weblogic81 "%WL_HOME%\common\bin\commEnv.cmd":bea#如果采用的上bea的JDK# JVM Heap(堆内存)最小尺寸为96M,最大尺寸为256Mset MEM_ARGS=-Xms96m -Xmx256m:sun#如果采用的是sun的JDK# JVM Heap(堆内存)最小尺寸为32M,最大尺寸为200M#公共变量对象的内存限制: PermSize:最小尺寸, MaxPermSize :最大允许分配尺寸set MEM_ARGS=-Xms32m -Xmx200m -XX:MaxPermSize=128m监视堆栈使用情况:下载JRockit JDK,该JDK已经自带了JRockit Mission Control工具,目前好像还没有单独下载JRockit Mission Control的地方,于JRockit JDK进行了绑定下载;在C:\bea\jrockit81sp5_142_08\console目录里面运行:C:\bea\jrockit81sp5_142_08\bin\java –Xmanagement -jar ManagementConsole.jar 如何监控weblogic呢?修改weblogic启动脚本startWebLogic.cmd,在里面加入-Xmanagement启动参数:%JAVA_HOME%\bin\java -Xmanagement %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS% =%SERVER_NAME% -Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE% -Djava.security.policy="%WL_HOME%\server\lib\weblogic.policy" weblogic.Server二、设置与性能有关的配置参数在一个WebLogic域中,配置文件(config.xml)位于与管理服务器通信的机器里,提供WebLogic MBean的长期存储。
weblogic10内存配置方法
weblogic10内存配置方法
在你想使用eclipse时,有很多的配置如weblogic 10内存配置都是需要你自己来配置的,为了明白怎么去配置。
所以店铺为大家整理推荐了以下的经验,希望大家喜欢。
weblogic 10 内存配置
早上刚拿到Eclipse,
弄了向个项目,感觉没有问题,
于是着手布署环境,
首先找了一下对Weblogic 的支持,
找不到,点击右上角的连接,
IDE会连接官网,找到你要的对WEBLOGIC的支持,
只是要耗点时间,
下载安装完后,进入ECLIPSE,
这次可以看到,有OracleWeblogic的支持了.
选择Oracle Weblogic Server 10gR3 >>Next
跟着,配置weblogic.
我的weblogic安装在H://software/bea/目录下:
配置完后,添加服务到Eclipse.
到这里,基本上的配置完成.Finish.
跟着是测试:
在Eclipse的Server窗口右击新建一个Server.
选择刚才新建的Weblogic服务器跟 >> Next
当然,
在上面这一步之前,
需要先有一个自己的工作域.
我之前已经新建了一个test_domain的域.
在这个窗口里,可以Next进入下一步,
如果在test_domain原来是有布署项目的话,
可以选择添加并随着domain的启动会运行.
在finish后:
跟着可以测试启动一下. 这样,就布署成功了.。
Weblogic的内存设定
Weblogic的内存设定- -/viewthread.php?tid=66394Linux AS3 安装配置优化weblogic8.1.3,及在oracle rac中建连接池(zt)Linux AS3 安装配置weblogic8.1.3自BEA WebLogic Server 6.1起,BEA通过稳定的接口和强有力的移植测试为版本兼容性建立了基线。
BEA WebLogic Server提供了最高级别的Web服务支持,使我们的工作变得十分容易。
Weblogic8.1更具有以下新的特性:•表示层基于struts 方案的可视页面流。
•Web 应用JSP的可视开发。
•业务组件EJB的简化开发。
•集成和连通性用于数据库、消息和企业资源集成及连通的、开放的、基于控件的服务器端框架。
•Web 服务自动发布和消费;同步和异步的、会话的、安全的Web服务。
•任何Java代码可视和基于代码的开发环境,带有自动的双向修改传播机制。
所需软件安装包:j2sdk-1_4_2_02-linux-i586.binweblogic813_linux32.bin一.weblogic的安装1. 首先安装JDK,安装完以后,设置环境变量,方法如下:将j2sdk-1_4_2_02-linux-i586.bin并保存到/tmp给文件加上可执行的权限# chmod 755 j2sdk-1_4_2_02-linux-i586.bin执行文件安装JDK# ./j2sdk-1_4_2_02-linux-i586.bin......(一大堆的license的信息)询问是否同意,当然选yes# mv j2sdk1.4.2_02 /usr/j2sdk现在JDK还不能算安装完成了,还要设置一下环境变量:# vi /etc/profile在profile里面添加:export JAVA_HOME=/usr/local/jdk1.3.1_06/export CLASSPATH=.:/usr/local/ jdk1.3.1_06/libPATH=:/bin2. 首先赋予源文件weblogic813_linux32.bin可执行权限# chmod a+x /tmp/weblogic813_linux32.bin3. 然后执行命令,进入安装窗口:(以窗口模式为例)# ./tmp/weblogic813_linux32.bin如果系统不支持显卡,可以执行命令:# ./tmp/weblogic813_linux32.bin -mode=console,这样,可以在命令行窗口下执行。
weblogic调优、参数设置、JDK设置等相关文档
java,weblogic和jdk性能文档作者: 张新周2005年1.应用服务器weblogic应用服务器是weblogic8.11.1 weblogic核心运行规则WebLogic Server的核心组件由监听线程,套接字复用器和可执行线程的执行队列组成。
当服务器由监听线程接收到连接请求后,将对它的连接控制权交给等待接收请求的套接字复用器。
然后套接字复用器读取离开套接字的请求,并将此请求及相关安全信息或事务处理环境一起置入适当的执行队列中(一般为默认的执行队列)。
当有一个请求出现在执行队列中时,就会有一个空闲的执行线程从该队列中取走发来的该请求,并返回应答,然后等待下一次请求.(演示weblogic的监控页面)1.1.1 演示线程监控1.1.2 演示吞吐量,请求等待队列,内存使用和回收情况1.2 weblogic的参数调整调优并不是没有目标的调整.没有目标的调优是没有意义的.在一定的要求下才能有目标的调优.A,调整默认执行线程数理想的默认执行线程数是由多方面的因素决定的,比如机器CPU性能、总线体系架构、I /O、操作系统的进程调度机制、JVM的线程调度机制。
WebLogic生产环境下默认的线程为25个,随着CPU个数的增加,WebLogic可以近乎线性地提高线程数。
线程数越多,花费在线程切换的时间也就越多,线程数越小,CPU可能无法得到充分利用。
为获取一个理想的线程数,需要经过反复的测试。
在测试中,可以以25*CPUs为基准进行调整(这是个基准,实际可能跟这个有差距的)。
当空闲线程较少,CPU利用率比较低时,可以适当增加线程数的大小(每五个递增)。
对于PC Server 和Window 2000,则最好每个CPU小于50个线程, 以CPU利用率为90%左右为佳。
由于目前WebLogic执行线程没有缩小线程数的功能,所以应将参数Threads Increase设置为0,同时不应改变优先级的大小。
weblogic参数调整-古道西风的日志-网易博客
weblogic参数调整-古道西风的日志-网易博客weblogic参数调整java study 2009-06-08 15:11:14 阅读445 评论0 字号:大中小订阅weblogic参数设置更改内存分配参数(以内存为2G为例)将bea"weblogic81"common"bin"commENV.cmd文件中set MEM_ARGS=-Xms128m -Xmx256m内存加大,设置为:set MEM_ARGS=-Xms1024m –Xms1024m然后在服务的startWeblogic.cmd中查找call "%WL_HOME%"common"bin"commEnv.cmd",如果在这句的后面无内存参数的设置则以上面的设置为准。
如果在这句的后面加上set MEM_ARGS=-Xms1024m –Xms1024m,则以这句为准。
适当调整了BEA Weblogic的线程数大小。
weblogic server的线程数是一个比较重要的参数。
线程数指的是weblogic server的最大并发处理操作数量。
但是并不是说增加线程数就以为着能够增加性能,能够处理更多的事情。
因为线程耗费资源,不必要的线程数增加反而会降低性能。
调整线程数时,在左边菜单的myserver上点击右键,选择查看执行队列,然后点击weblogic.kernel.Default。
将“线程计数”、“最大线程数”、“最小线程数”设置为相同的数值,“线程数增加”设为0,以减少线程数增减带来的性能消耗。
Weblogic监控http://ip:端口/console,输入用户名、密码对当前的服务进行监控。
登陆后会看到平台的左边有一树目录,打开mydomain下的servers,就会看到我们要监控的服务了。
单击服务,通过Monitoring—>General—> Monitor all Active Queues对线程进行监控制。
weblogic调优参数及监控指标 (1)
需要现场提供的测试数据服务器本身机器的种类,内存,swap空间,和CPU的数量(核心数),调整系统socket打开数,建议将open file size 也调大一些。
测试系统I/0 是否存在I/O问题。
Jvm 参数优化(weblogic启动jvm内存设置)启动weblogic时设置jvm参数大小set JAVA_OPTS=-Xms4096m –Xmx8192m需要确定当前系统物理内存和jdk版本及位(64 or 32),如果当前内存配置大于上述配置可先忽略。
weblogic调优参数对Weblogic的调优主要从SEVER、ExecuteQueue、JDBC等几个方面的相关参数进行调优:一、SERVER在mydomain->Servers->myserver->Configuration->Tuning->“Enable Native IO”中:1、Native IOEnabledTRUE,表示该Server使用本地I/O2、SocketReaders设置在执行线程中专用做Socket Readers的百分比3、Maximum Open Sockets最大打开Socket数4、Stuck Thread MaxTime堵塞线程时间,超过这个时间没有返回的执行线程,系统将认为是堵塞线程如果weblogic认为某个队列中的所有的线程全部堵塞的话,weblogic将会增加执行线程的数量。
注意:执行线程的数量一旦增加,目前weblogic不会去减少他,如果增加了一些线程以后再次出现overflow的警告,weblogic会继续增加执行线程的数量,一直到达到上限为止。
例如可以改成:默认600 改成12005、Stuck Thread Timer Interval系统检查堵塞线程的时间间隔6、Low Memory GC Threshold当可用内存小于该百分比时,垃圾回收启动7、Low Memory Granularity Level当两次检测的可用内存变化超过该百分比时,垃圾回收启动8、Low Memory Sample Size在一次检测中的取样次数9、Low Memory Time Interval检测间隔时间10、Accept Backlog等待队列中最多可以有多少TCP连接等待处理,如果在许多客户端连接被拒绝,而在服务器端没有错误显示,说明该值设得过低。
javajvm参数
javajvm参数Java虚拟机(JVM)是一个重要的Java运行环境,它的性能和稳定性直接影响到Java应用的运行效果。
在JVM的运行过程中,通过设置一些参数可以对其进行优化,提高Java应用的性能和稳定性。
以下是一些常用的JVM参数:1. -Xmx:设置JVM最大可用内存,可以避免OutOfMemoryError 异常的发生。
例如,-Xmx512m表示JVM最大可用内存为512MB。
2. -Xms:设置JVM初始内存大小,避免JVM启动时内存不足的情况。
例如,-Xms256m表示JVM初始内存大小为256MB。
3. -Xmn:设置JVM年轻代内存大小,可以通过调整年轻代内存的大小来优化GC效率。
例如,-Xmn128m表示JVM年轻代内存大小为128MB。
4. -XX:PermSize:设置JVM永久代初始大小,避免因永久代内存不足而导致的OutOfMemoryError异常。
例如,-XX:PermSize=64m 表示JVM永久代初始大小为64MB。
5. -XX:MaxPermSize:设置JVM永久代最大可用内存大小,避免因永久代内存不足而导致的OutOfMemoryError异常。
例如,-XX:MaxPermSize=256m表示JVM永久代最大可用内存为256MB。
6. -XX:SurvivorRatio:设置JVM年轻代中Eden区与Survivor 区的比例。
例如,-XX:SurvivorRatio=8表示Eden区和Survivor区的比例为8:1。
7. -XX:+UseConcMarkSweepGC:开启CMS垃圾收集器,在高并发环境下可以提高GC效率。
8. -XX:+UseParallelGC:开启并行垃圾收集器,在多核CPU环境下可以提高GC效率。
以上是一些常用的JVM参数,根据不同的应用场景和需求,可以通过调整这些参数来优化JVM的性能和稳定性。
weblogic启动内存配置[最新]
Weblogic 启动内存配置1、找到配置文件位置,默认路径是wlserver_10.3/common/bin/commEnv.sh2、找到commEnv.sh文件,修改此配置文件if [ "$PRODUCTION_MODE" = "true" ]; thencase $JA V A_VENDOR inBEA)JA V A_VM=-jrockitMEM_ARGS="-Xms512m -Xmx2048m";;HP)JA V A_VM=-serverMEM_ARGS="-Xms512m -Xmx2048m -XX:MaxPermSize=512m";;IBM)JA V A_VM=MEM_ARGS="-Xms512m -Xmx2048m";;Sun)JA V A_VM=-serverMEM_ARGS="-Xms512m -Xmx2048m -XX:MaxPermSize=512m";;*)JA V A_VM=MEM_ARGS="-Xms512m -Xmx2048m";;esacelsecase $JA V A_VENDOR inBEA)JA V A_VM=-jrockitMEM_ARGS="-Xms512m -Xmx2048m"JA V A_OPTIONS="${JA V A_OPTIONS} -Xverify:none";;HP)JA V A_VM=-clientMEM_ARGS="-Xms512m -Xmx2048m -XX:MaxPermSize=512m";;IBM)JA V A_VM=MEM_ARGS="-Xms512m -Xmx2048m";;Sun)JA V A_VM=-clientMEM_ARGS="-Xms512m -Xmx2048m -XX:MaxPermSize=512m"JA V A_OPTIONS="${JA V A_OPTIONS} -Xverify:none";;*)JA V A_VM=MEM_ARGS="-Xms512m -Xmx2048m";;红色标注的位置是启动时分配的内存大小,可根据实际需求进行调整。
JVM(java虚拟机)内存设置
JVM(java虚拟机)内存设置⼀、设置JVM内存设置1. 设置JVM内存的参数有四个:-Xmx Java Heap最⼤值,默认值为物理内存的1/4,最佳设值应该视物理内存⼤⼩及计算机内其他内存开销⽽定;-Xms Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;-Xmn Java Heap Young区⼤⼩,不熟悉最好保留默认值;-Xss 每个线程的Stack⼤⼩,不熟悉最好保留默认值;2. 如何设置JVM内存分配:(1)当在命令提⽰符下启动并使⽤JVM时(只对当前运⾏的类Test⽣效):java -Xmx128m -Xms64m -Xmn32m -Xss16m Test(2)当在集成开发环境下(如eclipse)启动并使⽤JVM时:a. 在eclipse根⽬录下打开eclipse.ini,默认内容为(这⾥设置的是运⾏当前开发⼯具的JVM内存分配):1. -vmargs2. -Xms40m3. -Xmx256m-vmargs表⽰以下为虚拟机设置参数,可修改其中的参数值,也可添加-Xmn,-Xss,另外,eclipse.ini内还可以设置⾮堆内存,如:-XX:PermSize=56m,-XX:MaxPermSize=128m。
此处设置的参数值可以通过以下配置在开发⼯具的状态栏显⽰:在eclipse根⽬录下创建⽂件options,⽂件内容为:org.eclipse.ui/perf/showHeapStatus=true修改eclipse根⽬录下的eclipse.ini⽂件,在开头处添加如下内容:1. -debug2. options3. -vm4. javaw.exe重新启动eclipse,就可以看到下⽅状态条多了JVM信息。
b. 打开eclipse-窗⼝-⾸选项-Java-已安装的JRE(对在当前开发环境中运⾏的java程序皆⽣效)编辑当前使⽤的JRE,在缺省VM参数中输⼊:-Xmx128m -Xms64m -Xmn32m -Xss16mc. 打开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 -Xss16mb. 打开Tomcat根⽬录下的bin⽂件夹,编辑catalina.bat,将其中的�TALINA_OPTS%(共有四处)替换为:-Xmx128m -Xms64m -Xmn32m -Xss16m⼆、查看设置JVM内存信息Runtime.getRuntime().maxMemory(); //最⼤可⽤内存,对应-XmxRuntime.getRuntime().freeMemory(); //当前JVM空闲内存参数及其默认值描述-XX:-DisableExplicitGC 禁⽌调⽤System.gc();但jvm 的gc 仍然有效-XX:+MaxFDLimit最⼤化⽂件描述符的数量限制-XX:+ScavengeBeforeFullGC 新⽣代GC 优先于Full GC 执⾏-XX:+UseGCOverheadLimit 在抛出OOM 之前限制jvm 耗费在GC 上的时间⽐例-XX:-UseConcMarkSweepGC 对⽼⽣代采⽤并发标记交换算法进⾏GC -XX:-UseParallelGC启⽤并⾏GCRuntime.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()。
JVM参数参数调优
JVM参数参数调优随着Java应用程序的发展和复杂性增加,JVM参数的调优成为了提升应用程序性能和稳定性的重要方面。
正确地配置JVM参数,可以最大限度地利用系统资源,并优化垃圾回收和内存管理。
以下是关于JVM参数调优的一些建议和指导。
1.内存参数- -Xmx:指定最大堆内存大小,建议设置为物理内存的70-80%。
- -Xms:指定初始堆内存大小,建议和-Xmx设置相同,避免堆内存大小变化频繁。
- -Xmn:指定年轻代大小,建议设置为整个堆内存的1/4到1/3- -XX:NewRatio:指定新生代和老年代的比例,默认为2,可以根据应用的特性进行微调。
2.垃圾回收参数- -XX:+UseParallelGC:启用并行垃圾回收,并行垃圾回收会使用多个线程进行垃圾回收操作,适用于多核CPU。
- -XX:+UseConcMarkSweepGC:启用并发标记清除垃圾回收算法,可以降低停顿时间。
- -XX:ParallelGCThreads:设置并行垃圾回收线程数,可以根据CPU核心数进行调整。
- -XX:CMSInitiatingOccupancyFraction:设置CMS回收器开始执行垃圾回收的Heap占用率阈值,默认为92%。
- -XX:+ExplicitGCInvokesConcurrent:当调用System.gc(时,执行并发垃圾回收。
3.线程参数- -Xss:指定每个线程的堆栈大小,默认为512k,如果应用程序创建了大量的线程,可以适当增加该值。
- -XX:ThreadStackSize:和-Xss功能相同,可以单独设置一些线程的堆栈大小。
4.类加载参数- -XX:+TraceClassLoading:打印类加载信息,用于排查类加载相关的问题。
- -XX:+TraceClassUnloading:打印类卸载信息,用于排查类卸载相关的问题。
- -XX:+UseParNewGC:启用并行垃圾回收的新生代收集器,适用于多核CPU。
JVM内存设置多大合适?Xmx和Xmn如何设置?
JVM内存设置多⼤合适?Xmx和Xmn如何设置?JVM内存设置多⼤合适?Xmx和Xmn如何设置?问题:新上线⼀个java服务,或者是RPC或者是WEB站点,内存的设置该怎么设置呢?设置成多⼤⽐较合适,既不浪费内存,⼜不影响性能呢?分析:依据的原则是根据Java Performance⾥⾯的推荐公式来进⾏设置。
296d1509689688.png具体来讲:Java整个堆⼤⼩设置,Xmx 和 Xms设置为⽼年代存活对象的3-4倍,即FullGC之后的⽼年代内存占⽤的3-4倍永久代 PermSize和MaxPermSize设置为⽼年代存活对象的1.2-1.5倍。
年轻代Xmn的设置为⽼年代存活对象的1-1.5倍。
⽼年代的内存⼤⼩设置为⽼年代存活对象的2-3倍。
BTW:1、Sun官⽅建议年轻代的⼤⼩为整个堆的3/8左右,所以按照上述设置的⽅式,基本符合Sun的建议。
2、堆⼤⼩=年轻代⼤⼩+年⽼代⼤⼩,即xmx=xmn+⽼年代⼤⼩。
Permsize不影响堆⼤⼩。
3、为什么要按照上⾯的来进⾏设置呢?没有具体的说明,但应该是根据多种调优之后得出的⼀个结论。
如何确认⽼年代存活对象⼤⼩?⽅式1(推荐/⽐较稳妥):JVM参数中添加GC⽇志,GC⽇志中会记录每次FullGC之后各代的内存⼤⼩,观察⽼年代GC之后的空间⼤⼩。
可观察⼀段时间内(⽐如2天)的FullGC之后的内存情况,根据多次的FullGC之后的⽼年代的空间⼤⼩数据来预估FullGC之后⽼年代的存活对象⼤⼩(可根据多次FullGC之后的内存⼤⼩取平均值)⽅式2:(强制触发FullGC, 会影响线上服务,慎⽤)⽅式1的⽅式⽐较可⾏,但需要更改JVM参数,并分析⽇志。
同时,在使⽤CMS回收器的时候,有可能不能触发FullGC(只发⽣CMS GC),所以⽇志中并没有记录FullGC的⽇志。
在分析的时候就⽐较难处理。
BTW:使⽤jstat -gcutil⼯具来看FullGC的时候, CMS GC是会造成2次的FullGC次数增加。
WEBLOGIC启动JVM参数设置经验
WEBLOGIC启动JVM参数设置经验2011-11-01 08:41:46分类:Linux1. 堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。
32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。
我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。
典型设置:o java -Xmx3550m -Xms3550m -Xmn2g -Xss128k-Xmx3550m:设置JVM最大可用内存为3550M。
-Xms3550m:设置JVM促使内存为3550m。
此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
-Xmn2g:设置年轻代大小为2G。
整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。
持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。
此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
-Xss128k:设置每个线程的堆栈大小。
JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。
更具应用的线程所需内存大小进行调整。
在相同物理内存下,减小这个值能生成更多的线程。
但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。
o java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0-XX:NewRatio=4:设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。
设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5-XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的大小比值。
Weblogic内存溢出及常用参数配置
Weblogic内存溢出及常用参数配置一、WebLogic内存溢出最近访问量门户访问量突然增大,总是内存溢出,频繁宕机,调整了很多参数没起作用,偶然发现Weblogic域在不断增大,罪魁祸首竟然是Weblogic的诊断文件,也是造成Weblogic内存溢出的主要原因。
当Weblogic启动时就加载了每个Server上的诊断文件,占用了大部分内存分配,用户访问量越大这个文件也随之越大,将他删除后重新启动服务,八个Server竟然也只用了6分钟,部署项目也只需7,8分钟,一直平稳运行,再无内存溢出现象。
该文件地址:/bea/user_projects/domains/{domain_name}/servers/{Server_name}/data/s tore/diagnostics/*.DAT(注:AdminServer下该诊断文件为1M左右正常)但是该文件还会继续生成增大,我们的域中并没有配置相关启动诊断文件的设置,Bea售后也无法解释,但可以通过尝试增加启动参数(ui.disableInstrumentation=true)来控制该诊断文件的增长,在/bea/user_projects/domains/{domain_name}/bin/startWebLogic.sh中:if [ "${WLS_REDIRECT_LOG}" = "" ] ; thenecho "Starting WLS with line:"echo "${JAVA_HOME}/bin/java ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS} ui.disableInstrumentation=true =${S ERVER_NAME}-Djava.security.policy=${WL_HOME}/server/lib/weblogic.policy ${PROXY _SETTINGS} ${SERVER_CLASS}"${JAVA_HOME}/bin/java ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS}ui.disableInstrumentation=true =${SE RVER_NAME}-Djava.security.policy=${WL_HOME}/server/lib/weblogic.policy ${PROXY_SETTINGS} ${SERVER_CLASS}elseecho "Redirecting output from WLS window to ${WLS_REDIRECT_LOG}"${JAVA_HOME}/bin/java ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS}ui.disableInstrumentation=true =${SE RVER_NAME}-Djava.security.policy=${WL_HOME}/server/lib/weblogic.policy ${PROXY_SETTINGS} ${SERVER_CLASS} >"${WLS_REDIRECT_LOG}" 2>&1该参数控制netui的诊断文件的生成。
JROCKIT 性能调优参数
一.JRockit调优简介JRockit是一个自适应的JVM,它能够自动调整自己去适应底层硬件,因此对它的调优主要集中在一些需要人工干预的参数上,比如说:需要划分多少 RAM给JRockit使用等。
JRockit有一组非标准的-X启动选项,我们可以用它来调节JVM。
JRockit有两组主要的子系统可以被优化-- 内存管理系统(包括垃圾回收)和线程系统。
在内存管理子系统方面,有很多调优的工作可以做。
二.Tuning WebLogic JRockit JVM1.设置初始堆尺寸可以通过-Xms:<size>m来设置初始堆大小,如果-Xmx的值小于128MB,则-Xms 缺省取值为16MB;如果-Xmx设置大于128MB,则-Xms缺省值为物理内存的25%,最大不超过64M。
例子:-Xgc:gencon -xms:64m -Xmx:64m myClass2.设置最大堆尺寸可以通过-Xmx:<size>m来设置最大堆尺寸。
在IA32构架下,由于操作系统给每个进程的最大内存寻址空间为 1.8G,因此最大堆尺寸不能超过 1.8G。
在IA64构架下,就没有1.8G的限制。
如果你的JAVA应用程序在运行时出现了Out of memory的错误,你就需要调大最大堆尺寸。
如果没有设置最大堆尺寸,则缺省值为:1.如果设置了-Xgc:gencopy,由最大堆尺寸是min{400, 物理内存*75%};2.如果没有设置-Xgc:gencopy,由最大堆尺寸是min{1536, 物理内存*75%};最好手工把最大堆尺寸设置为物理内存(1024M)的75%:-Xgc:gencon -xms:64m -Xmx:768m myClass3.设置Nursery的尺寸可以使用-Xns:<size>来设置Nursery的尺寸,我们要在保证垃圾回收停顿时间(garbage collection-pause)尽可能短的同时,尽量加大Nursery的尺寸,这在创建了大量的临时对象时尤其重要。
黑马程序员:Java面试题之weblogic相关问题
WebLogic是美国Oracle公司出品的一个application server确切的说是一个基于JAVAEE架构的中间件,BEA WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。
将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
那么,关于WebLogic的相关问题有哪些呢?一、如何给weblogic指定大小的内存?在启动Weblogic的脚本中(位于所在Domian对应服务器目录下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以调整最小内存为32M,最大200M二、如何设定的weblogic的热启动模式(开发模式)与产品发布模式?可以在管理控制台中修改对应服务器的启动模式为开发或产品模式之一。
或者修改服务的启动文件或者commenv文件,增加set PRODUCTION_MODE=true。
三、如何启动时不需输入用户名与密码?修改服务启动文件,增加WLS_USER和WLS_PW项。
也可以在boot.properties文件中增加加密过的用户名和密码.四、在weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行jms及ejb或连接池等相关信息进行配置后,实际保存在什么文件中?保存在此Domain的config.xml文件中,它是服务器的核心配置文件。
五、说说weblogic中一个Domain的缺省目录结构?比如要将一个简单的helloWorld.jsp放入何目录下,然的在浏览器上就可打入http://主机:端口号//helloword.jsp就可以看到运行结果了? 又比如这其中用到了一个自己写的javaBean该如何办?Domain目录服务器目录applications,将应用目录放在此目录下将可以作为应用访问,如果是Web应用,应用目录需要满足Web应用目录要求,jsp文件可以直接放在应用目录中,Javabean需要放在应用目录的WEB-INF目录的classes目录中,设置服务器的缺省应用将可以实现在浏览器上无需输入应用名。
JVM内存参数配置详解
JVM内存参数配置详解⾸先我们知道:JVM发⽣内存错误的类型1、堆内存泄漏:OutOfMemory:Java heap space此种内存泄漏,增加内存,只能暂时解决问题,并不能根治问题。
必须要优化代码,⼀定是代码的问题:排查堆中的⼤量对象,就会发现,这些对象都被引⽤,对象不能及时被回收,导致超出了堆的设定最⼤内存。
2、⽼年代内存泄漏:OutOfMemoryError:PermGen space类名、访问修饰符、字段描述、⽅法描述等,所占空间⼤于永久代最⼤值,就会出现,⼀般都是初始化内存的时候,空间太⼩,解决办法是扩⼤空间3、栈内存泄漏:StackOverflowError代码执⾏时,代码进栈,此刻如果栈的内存不⾜以容纳要进栈的代码的⼤⼩空间,那么久会报该错误。
可以通过设置栈的空间⼤⼩。
⼀般通过:-Xss设置线程的⼤⼩来解决。
⽐如:-Xss256m下⾯进⼊如何检测jvm内存情况的实际操作:1、监控JVM的GC情况:jstat -gcutil pid 2000 20 (只需要看O,如果达到100%,并且长期处于100%,则代表⽼年代内存不⾜)pid:服务进程的pid,可通过:ps -ef | grep java 来查看java的服务进程pid2000:每隔多少秒进⾏监控⼀次。
这⾥是2秒20:总共获取20次E:eden区O:⽼年代P:永久代YGC:新⽣代的GC次数YGCT:当前统计的YGC⼀共花费的时间(毫秒)FGC:fullGC⽼年代的GC次数FGCT:当前统计的FGC⼀共花费的时间(毫秒)GCT:YGC+FGC2、查看jvm配置信息jmap -head pid //可以看到java进程的堆的配置信息,各区的空间⼤⼩和配置信息3、查看jvm中类和对象的占⽤情况jmap -histo 5279 | head -20 //查看jvm中各个类的实例数、占⽤内存数量以及类的全名4、上⾯使我们的基本命令使⽤,那么我们怎么预测或者说内存泄漏会有什么征兆?1、tps出现⼤幅波动,并慢慢降低,甚⾄降为0,响应时间随之波动,慢慢升⾼2、通过jstat命令看到,Jvm中Old区不断增加,FullGC⾮常频繁,对应的FullGC消耗的时间也不断增加3、通过jconsole/jvisualvm可以看到,堆内存曲线不断上升,接近上限时,变成⼀条直线4、⽇志报错ng.OutOfMemoryError: Java heap space5、内存泄露怎么定位?(1、确定征兆:现象⽅⾯,Java进程抛出OOM异常,分析属于那种异常,是正常的内存资源耗尽还是内存泄漏。