JDK及其参数配置曹建侬(2004-3-12)一、什么是JDK1:JDK是javadevelopkit的简称。(java开发工具包,j2sdk)2:它为java应用程序提供标准和扩展的API。(应用程序接口)3:它为java应用程序提供运行环境。(jvm—java虚拟机来运行应用程序)所有的java应用程序都是运行在java虚拟机上。Java虚拟机提供类加载、class检测、运行安全控制、代码编译、动态连接与执行等功能。一个java虚拟机对应一个进程。NC运行时startdirectserver只启动了一个java虚拟机进程提供NC应用服务;而startup则启动了4个java进程,其中一个为监控服务,另外3个为NC服务。4:jdk目录结构:bin目录:包含可运行命令。主要有java、javac等include目录:包含一些java本地方法需要与操作系统打交道的头文件jre目录:java虚拟机目录,包含——bin目录:java命令;本地操作系统动态连接库。——lib目录:包含字体属性;安全属性文件,api库文件。Lib目录:api打包文件。5:jdk版本jdk1.2以前的称之为java1版本。Jdk1.2以后的称之为java2版本:jdk1.3系列、jdk1.4系列。6:bin目录下相关命令:javac——java编程语言编译器。Java——java程序运行时命令。Javadoc——产生javaapi文档命令。appletviewer——在非浏览器中运行与调试applets。Jar——管理java归档文件。Jdb——java调试器。Javah——c头文件产生器,在书写本地文件时使用。Javap——Rmi——为remote对象产生stubs和skeletons。Rmiregistry——远程对象注册服务。Rmid——Native2asii——转换文本到unicode格式Keytool——管理keystores和证书Jarsigner——产生与验证jar签名.Policytool——管理policy文件的GUI图形工具。以jdk1.3系列为例二、java相关参数设置java堆说明1:参数说明(1)、-client/-server:是使用服务器端java虚拟机还是客户端java虚拟机;默认是-client;-server对大型的服务器端程序在虚拟机内部做了优化处理。NC中中间件启动可以采用-server方式。%NC_JAVA_HOME%\bin\java-DNC_JAVA_HOME=%NC_JAVA_HOME%-DMASTER_JP="-server-Xms300m-Xmx512m"-DNODE_JP="-server-Xms250m-Xmx400m"-cp%_CLASSPATH%-Dnc.install.home.path=%NC_EXT_DIR%ufmiddle.start.tomcat.StartMiddle.\ierp\bin\prop.xml-DEJBConfigDir=./ejbXMLs-DExtServiceConfigDir=./ejbXMLs注意:startup中该-server应该加在什么地方。原因:startup中的java事实上是启动一个中间件监控服务进程;在该监控服务进程中再启动三个真正的中间件进程。因此在java中设置的参数事实上都是监控服务的参数。其中-DMASTER_JP、-DNODE_JP属性会作为在该监控线程中启动中间件java进程的初始参数。(2)、-XX:Newsize=与-XX:MaxNewSize=:设置新生代大小。Java堆分为新生代与旧生代,新生代存放新生成的对象,旧生代存放生命周期长的对象。(3)、-verbose:gc:打开gc统计选项。(4)、-XX:MaxPermSize=64m:永生带大小设置。(5)、-XX:-DisableExplicitGC:禁止调用System.gc()。Jvm只在需要的时候做垃圾回收。即禁止了日常的小型垃圾回收,只做全局回收。(6)、-XX:NewRatio=2,新生代与旧生代大小比率。(7)、-XX:ThreadStackSize=512:线程栈大小(k)。(8)、-cp/-classpath<目录>:设置系统类路径。(9)、-version:打印出jdk版本。(10)、-D=:在启动时自己设置的jvm系统属性(11)、-Xmixed/-Xint:混合模式与解释模式执行(12)、-Xbootclasspath:设置启动时类与资源搜索路径。(13)、-Xnoclassgc:禁止jvm垃圾收集。(14)、-Xincgc:启用增量垃圾收集。(15)、-Xloggc::记录gc状态到文件。(16)、-Xbatch:禁止后台编译。(17)、-Xms:设置初试java堆大小。最重要的参数之一。设置系统初始启动时分配给java虚拟机的堆的大小。可设置为与-Xmx一样的大小,这样就节省了预期要增长堆大小的消耗。(18)、-Xmx:设置最大javv堆大小。最重要的参数之一.设置系统能够分配给该java进程堆的最大值。在windos系统下不能超过1.6G。(19)、-Xss:设置java线程栈大小。(20)、-Xprof:输出cpu数据。三、NC启动时java参数设置建议:设置时需要遵循以下原则:1、机器物理内存够用:尽量避免使系统使用虚拟内存,如果如此,则会带来效率问题。2、java堆设置大小之和控制在物理内存的70%是一个比较理想的值范围。3、还要根据应用的情况来定制:如果使用报表(IUFO),则master堆大小要设置大一点;因为报表吃内存比较多,一下子需要1-200m内存对报表而言是比较正常的操作。并且报表基本上都在master上操作。如果是只使用NC的总帐相关节点,相对而言对内存要求不是很高,一般应用情况下512m足够。但存货或某些节点的使用可能对内存压力较大,还需要仔细观察。4、应用服务器2G内存时的配置推荐:如果使用了报表,一般情况下:%NC_JAVA_HOME%\bin\java-DNC_JAVA_HOME=%NC_JAVA_HOME%-DMASTER_JP="-Xms512m–Xmx768m"-DNODE_JP="-Xms256m–Xmx512m"-cp%_CLASSPATH%-Dnc.install.home.path=%NC_EXT_DIR%ufmiddle.start.tomcat.StartMiddle.\ierp\bin\prop.xml-DEJBConfigDir=./ejbXMLs-DExtServiceConfigDir=./ejbXMLs报表数据非常大时,导致master出现outofmemory或中间件监控窗中出现:3000middlewaryiswaitting时,可将-Xmx768m调为1024m。四、java参数设置不当可能导致NC的问题:1:outofmemory:日志中出现outofmemory,对应中间件down掉被重起。2:监控窗中出现:MiddleSpyisWaitting,效率降低并至不可用。