WEBLOGIC启动JVM参数设置经验
Jprofiler监控Weblogic10_操作手册

1Jprofiler监控本地weblogic服务器1.1环境准备1.1.1Jprofiler7.1安装1.将Jprofiler安装文件jprofiler_windows_7_1.zip解压到任一一个没有中文字符的目录下如2.进入到安装目录的bin目录下(D:\jprofiler7.1\jprofiler7\bin),双击“jprofiler.exe”3.在弹出的窗口中除注册页面需要填写license(公司和姓名可以随便填写,license请参考),其他选择默认配置1.1.2Weblogic1.1.2.1安装Weblogic10.31.将Weblogic10的安装包“weblogic server103_win32(jh).7z”解压2.双击可执行文件“weblogic server103_win32.exe”进行安装3.安装步骤请参照:大体类似。
1.1.2.2创建Weblogic域1.Weblogic安装完成后需要创建一个新的Weblogic域2.具体创建域的操作步骤请参考:1.1.3MyEclipse安装开发工具我这里使用是myeclipse7(其他版本也可以),安装步骤: 略1.2示例1.2.1建立Java工程1、在开发工具myeclipse7中新建WEB项目Jprofilertest2、建包cn. Jprofilertest3、在该包下建类文件TestBean.java和TestMain.javapackage cn.Jprofilertest;public class TestBean {String name = "";public static void main(String[] args){System.out.println("test");}package cn. Jprofilertest;import java.util.ArrayList;public class TestMain {public static ArrayList list = new ArrayList(); //存放对象的容器public static int counter = 0; //作统计用}4、建测试用的JSP文件init1.jsp、init2.jspInit1.jsp(每次执行都创建1万个TestBean对象)<%@ page language="java" import="cn. Jprofilertest.*" pageEncoding="ISO-8859-1"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>init</title></head><body><%for(int i=0;i<10000;i++){TestBean b = new TestBean();TestMain.list.add(b);}%>SIZE:<%=TestMain.list.size()%><br/>counter:<%=TestMain.counter++%></body></html>注:Init2.jsp和init1.jsp一模一样即可(后面有用)。
weblogic数据源优化调整记录

一:解决数据源一段时间后不可用问题前的观察和分析:1.1.开始时连接池各项属性的配置信息:要在创建连接池时创建的物理连接数。
更多信息…此连接池可容纳的最大物理连接数。
更多信息…将新连接添加到连接池时创建的连接数。
更多信息…用于维护存储在语句高速缓存中的预定义语句的算法。
更多信息…存储在高速缓存中的预定义语句和可调用语句的数量。
(这样可能会提高服务器性能。
)更多信息…高级使WebLogic Server 能够在将连接提保留时测试连接供给客户机之前对连接进行测试。
(要求指定“测试表名称”。
)更多信息…WebLogic Server对未用连接进行测试土测试物理数据库连接时使用的数据库表名。
指定“测试频率”和启用“测试保留的连接数”时需要此名称更多信测试频率:的间隔秒数。
(要求指定“测试表名120称”。
)未通过测试的连接将被关闭,然后将它们重新打开以重新建立有效的物理连接。
如果测试再次失败,则此连接将被关闭。
更多信息…测试表名称:SQL SELECT 1 FROM DUAL在将连接传送到应用程序之前或定期连接测试过程期间,WebLogic Server相信连接仍然有效并将跳过连接测试时使用连接的秒数。
更多信息…在收缩为满足需要而增大了的连接池前需等待的秒数。
更多信息…初始化SQL:要执行用于初始化新建物理数据库连接的SQL语句。
以SQL后跟一个空格作为语句的开头。
更多信息…建立数据库连接尝试的间隔秒数。
更多信息…创建每个物理数据库连接前的延迟秒数。
此延迟支持不能快速连续处理多个连接请求的数据库服务器。
更多信非活动连接超时保留连接处于不活动状态的秒数,该时间过后WebLogic Server 将收回该连接并将其释放回连接池。
更多信等待保留数据源的连接池中的连接时会阻塞线程的最大并发连接请求数。
更多信息…保留连接池中的连接的调用超时之前经过的秒数。
更多信息…连接池配置信息重要修改点:60个可用的数据库链1.调整此参数是为了提升数据源的性能,在数据源创建之初,直接创建接,以防止在oracle服务器端在一个数据库实例zmddb下,默认提供最大150个数据库链接可供使用,而由于在同一个zmddb数据库实例下,我们有两个用户zmdswoa和zmdswbgscms也就是说假如zmdswbgscms应用程序使用了140个数据库链接,并且没有得到合理的释放,那么zmdswoa应用程序所使用的数据源中即使配置了60个最大容量的数据库链接,但是,初始容量为1,那么也就是需要时才创建新的数据库链接放入数据源的池中,那么如果oracle 服务端,已经没有可用的数据库连接了,zmdswoa对应的数据源将无法创建可用链接。
WebLogic 8[1].1安装手册
![WebLogic 8[1].1安装手册](https://img.taocdn.com/s3/m/4c80d3d380eb6294dd886c97.png)
WebLogic Server 8.1安装文档1. 安装前的准备工作(SUN操作系统不需要重新下载jdk)操作系统平台:IBM AIX 5.2WebLogic版本:WebLogic Server 8.1sp31.1 首先请确认您要安装的WebLogic版本所在的平台已通过了BEA的认证,完整的认证平台列表请参考/platform/suppconfigs/configs81/81_over/overview.html1.2 确定一个安装目录,建议该目录下至少有1个G的空间,可以使用du来察看磁盘空间的使用情况在本项目中使用/home/bea目录进行安装。
1.3 从ibm网站上获取适合版本的jdk:/developerworks/java/jdk/aix/service.html然后安装此jdk2. 安装步骤WebLogic在UNIX平台下的安装方法一般有三种:图形窗口模式,控制台模式,无人守护安装模式。
在本例中采用图形窗口模式进行安装2.1 获取并上传weblogic安装介质到一个临时目录如果手头没有安装介质,我们可以到/上下载一个WebLogic试用版,然后通过FTP上传到主机上的一个tmp目录,该临时目录建议至少有1个G的剩余空间2.3 开始安装2.3.1 .jar的安装方法(sun系统请使用.bin的安装方法)用root用户登录系统,并赋予.jar可执行权限chmod a+x pj_server813_generic_ibm.jar使用命令Java –jar pj_server813_generic_ibm.jar2.3.2 .bin的安装方法用root用户登录系统,并赋予.bin可执行权限chmod a+x solaris64.bin使用命令./solaris64.bin开始安装WebLogic Server,此时会出现图形界面点击NextY es选择安装目录为F盘完全安装,Next:Next即开始安装:Installing……Done到此,WebLogic Server就安装完成,其他机器的安装相同。
weblogic目录详解

weblogic的安装、目录结构、启动2006-11-29 20:09weblogic的安装、目录结构、启动安装WEBLOGIC SERVERweblogic server的目录结构weblogic server的classpath变量weblogic server使用命令行通过管理控制台执行核心的管理任务命令行管理安装有三种不同的方式安装weblogic server》用户图形界面GUI》控制台console模式》Silent(沉默)模式(用脚本安装)BEA的installer支持平台windows2000/xp solaris hp-ux aixGUI方式安装(windows)》到BEA下裁weblogic server安装,》选bea软件的主目录》选完整方式还是只安装其中一个》选weblogic的目录(应在BEA主目录下)》安装其他包如XML等两个可以不安装(默认不装)CLI方式安装(linux,unix)在UNIX平台下有两种方式包含JDK1.4.1的unix特有的java installer与平台无关的java installer,没有JDK它的文件名是以.jar为结尾的安装步骤类似于GUISilent安装读取配置文件服务包(serveice packs)服务包安装就像weblogic一样(或直接覆盖)目录结构/bea bea的主目录|-/jdk141_03 预打包的1.4.1_03JDK/jre |-/jrockit81sp1_141_03 预打包的jrockit1.4.1|-/logs 安装bea产品的历史记录|-/utils 附加的/工具jar文件|-/weblogic81 weblogic server的根目录 | |-common 含有被weblogic server组件所共享的文件包括环境脚本模板文件评估软件| |-javelin workshop使用的java/jsp编译器| |-samples 含有示例代码和资源| | |-server| | |-config| | | |-examples weblogic server示例应用和组件| | | --petstore sun j2ee pet store应用| | |-eval| | | |-pointbase 含有pointbase数据库的评估版| | |-src 含有petstore和与weblogic server一起安装的示例的源代码和文件| | | |-examples| | | --petstore| | --stage 含有示例域部署前的客户和服务器类| |-server weblogic server 程序文件| |-uninstall 用于卸载weblogic server的代码| --workshop weblogic workshop应用|-/license.bea 许可文件(xml格式文件,购买后需要覆盖这个文件)|-/registry.xml 所有安装bea产品的记录文件--/updatelicense.cmd 更新license.bea文件Domain目录结构|-/adminserver 管理服务器配置(config.xml配置文件,boot.properties可放置boot的用户名和密码加密保存,| 服务方式启动installservice.cmd,) |-/applications 应用服务器配置|-/_cfgwiz_donotdelete--/configArchivejvm run-time变量weblogic server能在大多数jvm中运行weblogic server当前的执行在:》jdk1.4(包括jrocket)--服务器》jdk1.2或1.3.或jdk1.4--客户应用调整-xms与-xmx的大小,与参数-Dprop=val、-classpath classpath 命令行为:java options fullyqualifiedjavaclass programoptionsweblogic server的依赖环境要运行weblogic server,你必须配置:》path包括所有可执行程序(包括java解释器)》classpath包括依赖的包这些参数可以设置在:》你计算机环境变量设置中》定制的批处理文件或shell脚本中命令行为:set VAR_NAME=VALUE配置classpathweblogic server的classpath通过java系统的classpath环境变量配置必须在classpath中的文件:%WL_HOME%/server/lib/weblogic.jarService pack中的其他文件可能包含在Classpath中的文件%WL_HOME%/common/eval/pointbase/lib/pbserver44.jar%WL_HOME%/common/eval/pointbase/lib/pbclient44.jar%WL_HOME%/server/lib/xmlx.jarJDBC驱动程序(很具不同的要求来设置如oracle,ojdbc.jar)Starup类和Shutdown类(启动和停止时动作的类)第三方类库其他常用类启动weblogic server(%SERVER_HOME%为服务器名)java -hotspot -Xms32m -Xmx200m -classpath "%CLASSPATH%"=%SERVER_NAME% -Dbea.home="C:\bea"ername=%WLS_USER%-Dweblogic.management.password=%WLS_PW%-Dweblogic.ProductionModeEnabled=%STARTMODE%-Djava.security.policy=%WL_HOME%\server\lib\weblogic.policy weblogic.Server命令行为:cd bea\user_projects\someDomainstartWeblogic.cmd监视启动成功与否:Server started in RUNNING mode(启动成功)控制台管理资源配置部署应用或组件监测资源使用情况查看日志消息启动和关闭服务器,或者执行其它管理工作启动控制台http://hostname:port/console(非安全方式)https://hostname:secureport/console(安全方式)示例:http://localhost:7001/consolehttp://adminDNSName:7001/consolehttps://127.0.0.1:7002/console登陆使用管理用户名和密码服务器生命周期关闭/ ^V \启动关闭 <--- 失败\ ^V /备用/ \V V恢复挂起未知\ /V V运行读取发布到 weblogic 的 ear 文件的目录结构的sample.jsp- -<%ServletContext sCon = getServletConfig().getServletContext(); sCon.getResourceAsStream("/WEB-INF/classes/resources.properties"); out.println("<b>root</b><br>");Collection c = sCon.getResourcePaths("/");Iterator it = c.iterator();while(it.hasNext())out.println(it.next() + "<br>");out.println("<b>WEB-INF</b><br>");c = sCon.getResourcePaths("/WEB-INF/");it = c.iterator();while(it.hasNext())out.println(it.next() + "<br>");%>weblogic的classloader装载策略及部署应用的目录结构1 目录结构在weblogic上要发布一个web applicate必须有下面的目录结构:mywebapp|____WEB-INF|___lib //放这个web application所需要的jar包|___classes //放class类|___web.xml //对这个web application描述发布一个application需要有下面的目录结构:myapplication|___APP-INF //放在这个目录下的lib和classes不能实例化webapp下的类| |___lib //放ejb和webapp公用的jar包| |___classes //放ejb和webapp公用的类|___META-INF| |__application.xml|___mywebapp| |____WEB-INF| |___lib| |___classes //放class类| |___web.xml|___ejb.jar //ejb的jar包========================================== ========================================2 classloaderclassloader是分层次的,它只能加载比它层次高的类及它自身的类,同层次的类及比它层次低的类都不能加载。
vm options 参数

vm options 参数
VM options(虚拟机选项)是指在Java虚拟机启动时,通过命令行或
配置文件等方式传递给JVM的参数。这些参数可以控制JVM的行为,
例如堆内存大小、垃圾回收策略、调试信息等。
常见的VM options参数包括:
- -Xms:JVM堆内存的初始值
- -Xmx:JVM堆内存的最大值
- -XX:+UseG1GC:使用G1垃圾回收器
- -verbose:gc:输出GC日志信息
- -XX:+HeapDumpOnOutOfMemoryError:在内存溢出时生成堆转储文
件
- -Dproperty=value:设置系统属性
可以通过在命令行中使用java命令并指定VM options参数来启动Java
应用程序,例如:java -Xmx1g -jar myapp.jar。
Weblogic常用监控方法及指标

性能测试工作室,专注于性能测试技术研究(JMSRuntimeJMSServersCurrentCount 返回当前JMS服务的连接数ConnectionsCurrentCount 返回本JMS服务器上当前的连接数JMSServersHighCount 返回自服务器启动后JMS服务的最大连接数ConnectionsHighCount 返回本JMS服务器自上次重置后的最大连接数JVMRuntimeHeapSizeCurrent 返回当前JVM堆中内存数,单位时字节HeapFreeCurrent 返回当前JVM堆中空闲内存数,单位时字节ExecuteQueueRuntimeExecuteThreadCurrentIdleCount 返回队列中当前空闲线程数PendingRequestOldestTime 返回队列中最长的等待时间PendingRequestCurrentCount 返回队列中等待的请求数Queue Length 队列长度JDBCConnectionPoolRuntimeWaitingForConnectionHighCount返回本JDBCConnectionPoolRuntimeMBean 上最大等待连接数WaitingForConnectionCurrentCount 返回当前等待连接的总数MaxCapacity 返回JDBC池的最大能力WaitSecondsHighCount 返回等待连接中的最长时间等待者的秒数ActiveConnectionsCurrentCount 返回当前活动连接总数ActiveConnectionsHighCount 返回本JDBCConnectionPoolRuntimeMBean 上最大活动连接数注:weblogic通常监控JVM和执行队列,JDBC连接池,其中执行队列最关键的指标是Queue Length 队列长度weblogic一般来说监控jvm的使用、执行线程队列情况、和连接池的变化情况,还有一个很重要的检查weblogic的console日志这里经常能反映一些很重要到情况。
IntelliJIDEA设置JVM运行参数的操作方法
IntelliJIDEA设置JVM运⾏参数的操作⽅法打开 IDEA 安装⽬录,看到有⼀个 bin ⽬录,其中有两个 vmoptions ⽂件,需针对不同的JDK进⾏配置:32 位:idea.exe.vmoptions64 位:idea64.exe.vmoptions-Xms512m-Xmx1024m-XX:MaxPermSize=512m-XX:ReservedCodeCacheSize=225m-XX:+UseConcMarkSweepGC-XX:SoftRefLRUPolicyMSPerMB=50-eaeCanonCaches=false.preferIPv4Stack=true上⾯列出的是idea64.exe.vmoptions的默认内容,我们可以根据需要进⾏修改。
各参数的含义分别为:⼀、设置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内存分配):-vmargs-Xms40m-Xmx256m-vmargs表⽰以下为虚拟机设置参数,可修改其中的参数值,也可添加-Xmn,-Xss,另外,eclipse.ini内还可以设置⾮堆内存,如:-XX:PermSize=56m,-XX:MaxPermSize=128m。
WebLogic的日常操作和监控
WebLogic的启动
• Admin Server的启动
• startWebLogic.cmd/sh • 在Unix或Linux中为了在telnet退出后让WebLogic继续运行,需要使用 nohup和&符来调用启动命令:nohup ./startWebLogic.sh & • WebLogic的标准输出和标准出错信息会纪录在nohup.out文件中
WebLogic Server的停止- console方式
WebLogic Server的停止- 脚本方式
• Admin Server停止
• ./stopWebLogic.cmd/sh username password
• Managed Server停止
• ./stopManagedWebLogic.cmd/sh <servername> <t3://adminip:adminport> username password
在这条日志信息中,它们的格式是: 时间戳,错误级别,子系统 ,机器名,Server名称,线程号,用户号,事务号,.. 信息号 ,文本信息。 如果这信息包括跟踪堆栈的信息,这些信息将紧跟在这条信息 后面。
如何去分析日志
日志中出现错误,如何去请求帮助
如果日志中出现错误,您可以到BEA网站去查询相关 的错误信息和解决办法,如找不到,可以通过以下途径寻求帮助。
• 范围不同,信息内容也不同
• 涉及Domain范围内的日志写入Domain log(如Cluster,RMI 通讯等信息)
• Domain Log Filter
• 个或多个server按过滤条件过滤后的一些错误信息才传递给 Domain log
• 常见的错误也不同
IntelliJIDEA设置JVM运行参数
IntelliJIDEA设置JVM运⾏参数打开 IDEA 安装⽬录,看到有⼀个 bin ⽬录,其中有两个 vmoptions ⽂件,需针对不同的JDK进⾏配置:32 位:idea.exe.vmoptions64 位:idea64.exe.vmoptions-Xms512m-Xmx1024m-XX:MaxPermSize=512m-XX:ReservedCodeCacheSize=225m-XX:+UseConcMarkSweepGC-XX:SoftRefLRUPolicyMSPerMB=50-eaeCanonCaches=false.preferIPv4Stack=true各参数的含义分别为:⼀、设置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内存分配):-vmargs-Xms40m-Xmx256m-vmargs表⽰以下为虚拟机设置参数,可修改其中的参数值,也可添加-Xmn,-Xss,另外,eclipse.ini内还可以设置⾮堆内存,如:-XX:PermSize=56m,-XX:MaxPermSize=128m。
WEBLOGIC性能参数
WEBLOGIC性能参数MessagesLogged –该weblogic服务器实例产生的日志消息总数Number of total log messages generated by this instance of the weblogic server.Registered - 如果已取消注册由该对象表示的MBean,则返回falseReturns false if the MBean represented by this object has been unregistered.CachingDisabled - 禁用代理中的缓存的专用属性Private property that disables caching in proxies.ServerRuntimeSocketsOpenedTotalCount - 返回本服务器上登记的socket的总数Return the total number of registrations for socket muxing on this sever.Registered - 如果已取消注册由该对象表示的MBean,则返回falseReturns false if the MBean represented by this object has been unregistered.ActivationTime –返回服务器激活时间Return the time when the server was started.CachingDisabled -禁用代理中的缓存的专用属性Private property that disables caching in proxies.OpenSocketsCurrentCount –返回本服务器上当前登记的socket数Return the current number sockets registered for socket muxing on this server.AdminServerListenPort –返回管理服务器监听的端口Return the port on which admin server is listening for connections.RestartsTotalCount –返回自群集上次激活后本服务器重启的总次数Return the total number of restarts for this server since the cluster was last activated.ListenPort –返回当前服务器监听连接的端口Return the port on which this server is listening for connections.ServletRuntimeExecutionTimeAverage –返回所有servlet自被创建后被调用的平均数Returns the average amount of time all invocations of the servlet have executed since created.CachingDisabled - 禁用代理中的缓存的专用属性Private property that disables caching in proxies.Registered - 如果已取消注册由该对象表示的MBean,则返回falseReturns false if the MBean represented by this object has been unregistered.ExecutionTimeHigh –返回servlet自创建后耗时最长的一个交易调用的时间Returns the amount of time the single longest invocation of the servlet has executed since created.ReloadTotalCount –返回servlet被重载总次数Returns the total number of times the servlet has been reloaded.PoolMaxCapacity –返回单线程模式下servlet的最大能力Returns the maximum capacity of this servlet for single thread model servlets.InvocationTotalCount –返回servlet被调用的总次数Returns the total number of times the servlet has been invoked.ExecutionTimeLow –返回servlet自创建后单次最短调用消耗的时间Returns the amount of time the single shortest invocation of the servlet has executed since created. Note that for the CounterMonitor, the difference option must be used.ExecutionTimeTotal –返回servlet自被创建后所有被调用的总时间数Returns the amount of time all invocations of the servlet has executed since created. WebAppComponentRuntimeSessionsOpenedTotalCount –返回该服务器上打开的会话总数Returns the total number of sessions opened in this server.CachingDisabled - 禁用代理中的缓存的专用属性Private property that disables caching in proxies.Registered - 如果已取消注册由该对象表示的MBean,则返回falseReturns false if the MBean represented by this object has been unregistered.OpenSessionsHighCount –返回本服务器上打开会话总数的最大值Returns the high water mark of the total number of open sessions in this server. The count starts at zero each time the server is activated. Note that this is an optimization method for a highly useful statistic that could be implemented less efficiently using change notification.OpenSessionsCurrentCount –返回当前component打开的会话总数Returns the current total number of open sessions in this component. EJBStatefulHomeRuntimeStateless –如果mbean代表无状态会话bean,返回true,否则返回false。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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区的大小比值。
设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6-XX:MaxPermSize=16m:设置持久代大小为16m。
-XX:MaxTenuringThreshold=0:设置垃圾最大年龄。
如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。
对于年老代比较多的应用,可以提高效率。
如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概论。
2. 回收器选择JVM给了三种选择:串行收集器、并行收集器、并发收集器,但是串行收集器只适用于小数据量的情况,所以这里的选择主要针对并行收集器和并发收集器。
默认情况下,JDK5.0以前都是使用串行收集器,如果想使用其他收集器需要在启动时加入相应参数。
JDK5.0以后,JVM会根据当前系统配置</j2se/1.5.0/docs/guide/vm/server-class.html>进行判断。
1. 吞吐量优先的并行收集器如上文所述,并行收集器主要以到达一定的吞吐量为目标,适用于科学技术和后台处理等。
典型配置:§ java -Xmx3800m -Xms3800m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20-XX:+UseParallelGC:选择垃圾收集器为并行收集器。
此配置仅对年轻代有效。
即上述配置下,年轻代使用并发收集,而年老代仍旧使用串行收集。
-XX:ParallelGCThreads=20:配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收。
此值最好配置与处理器数目相等。
§ java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20-XX:+UseParallelOldGC-XX:+UseParallelOldGC:配置年老代垃圾收集方式为并行收集。
JDK6.0支持对年老代并行收集。
§ java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:MaxGCPauseMillis=100-XX:MaxGCPauseMillis=100:设置每次年轻代垃圾回收的最长时间,如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值。
§ java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:MaxGCPauseMillis=100-XX:+UseAdaptiveSizePolicy-XX:+UseAdaptiveSizePolicy:设置此选项后,并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低相应时间或者收集频率等,此值建议使用并行收集器时,一直打开。
2. 响应时间优先的并发收集器如上文所述,并发收集器主要是保证系统的响应时间,减少垃圾收集时的停顿时间。
适用于应用服务器、电信领域等。
典型配置:§ java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC-XX:+UseConcMarkSweepGC:设置年老代为并发收集。
测试中配置这个以后,-XX:NewRatio=4的配置失效了,原因不明。
所以,此时年轻代大小最好用-Xmn设置。
-XX:+UseParNewGC:设置年轻代为并行收集。
可与CMS收集同时使用。
JDK5.0以上,JVM会根据系统配置自行设置,所以无需再设置此值。
§ java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseConcMarkSweepGC-XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection-XX:CMSFullGCsBeforeCompaction:由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。
此值设置运行多少次GC以后对内存空间进行压缩、整理。
-XX:+UseCMSCompactAtFullCollection:打开对年老代的压缩。
可能会影响性能,但是可以消除碎片辅助信息JVM提供了大量命令行参数,打印信息,供调试使用。
主要有以下一些:o -XX:+PrintGC输出形式:[GC 118250K->113543K(130112K), 0.0094143 secs][Full GC 121376K->10414K(130112K), 0.0650971 secs]o -XX:+PrintGCDetails输出形式:[GC [DefNew: 8614K->781K(9088K), 0.0123035 secs] 118250K->113543K(130112K), 0.0124633 secs][GC [DefNew: 8614K->8614K(9088K), 0.0000665 secs][Tenured: 112761K->10414K(121024K), 0.0433488 secs] 121376K->10414K(130112K), 0.0436268 secs]o -XX:+PrintGCTimeStamps -XX:+PrintGC:PrintGCTimeStamps可与上面两个混合使用输出形式:11.851: [GC 98328K->93620K(130112K), 0.0082960 secs]o -XX:+PrintGCApplicationConcurrentTime:打印每次垃圾回收前,程序未中断的执行时间。
可与上面混合使用输出形式:Application time: 0.5291524 secondso -XX:+PrintGCApplicationStoppedTime:打印垃圾回收期间程序暂停的时间。
可与上面混合使用输出形式:Total time for which application threads were stopped: 0.0468229 secondso -XX:PrintHeapAtGC:打印GC前后的详细堆栈信息输出形式:34.702: [GC {Heap before gc invocations=7:def new generation total 55296K, used 52568K [0x1ebd0000, 0x227d0000, 0x227d0000)eden space 49152K, 99% used [0x1ebd0000, 0x21bce430, 0x21bd0000)from space 6144K, 55% used [0x221d0000, 0x22527e10, 0x227d0000)to space 6144K, 0% used [0x21bd0000, 0x21bd0000, 0x221d0000)tenured generation total 69632K, used 2696K [0x227d0000, 0x26bd0000, 0x26bd0000)the space 69632K, 3% used [0x227d0000, 0x22a720f8, 0x22a72200, 0x26bd0000)compacting perm gen total 8192K, used 2898K [0x26bd0000, 0x273d0000, 0x2abd0000)the space 8192K, 35% used [0x26bd0000, 0x26ea4ba8, 0x26ea4c00, 0x273d0000)ro space 8192K, 66% used [0x2abd0000, 0x2b12bcc0, 0x2b12be00, 0x2b3d0000)rw space 12288K, 46% used [0x2b3d0000, 0x2b972060, 0x2b972200, 0x2bfd0000)34.735: [DefNew: 52568K->3433K(55296K), 0.0072126 secs] 55264K->6615K(124928K)Heap after gc invocations=8:def new generation total 55296K, used 3433K [0x1ebd0000, 0x227d0000, 0x227d0000)eden space 49152K, 0% used [0x1ebd0000, 0x1ebd0000, 0x21bd0000)from space 6144K, 55% used [0x21bd0000, 0x21f2a5e8, 0x221d0000)to space 6144K, 0% used [0x221d0000, 0x221d0000, 0x227d0000)tenured generation total 69632K, used 3182K [0x227d0000, 0x26bd0000, 0x26bd0000)the space 69632K, 4% used [0x227d0000, 0x22aeb958, 0x22aeba00, 0x26bd0000)compacting perm gen total 8192K, used 2898K [0x26bd0000, 0x273d0000, 0x2abd0000)the space 8192K, 35% used [0x26bd0000, 0x26ea4ba8, 0x26ea4c00, 0x273d0000)ro space 8192K, 66% used [0x2abd0000, 0x2b12bcc0, 0x2b12be00, 0x2b3d0000)rw space 12288K, 46% used [0x2b3d0000, 0x2b972060, 0x2b972200, 0x2bfd0000)}, 0.0757599 secs]o -Xloggc:filename:与上面几个配合使用,把相关日志信息记录到文件以便分析。