jvm参数

来源:互联网 发布:电脑软件管家 编辑:程序博客网 时间:2024/06/06 14:10
<p style="margin-top: 0px; margin-bottom: 5px; padding-top: 0px; padding-bottom: 0px; border: 0px; list-style: none; word-wrap: normal; word-break: normal; line-height: 20px; color: rgb(70, 70, 70); font-family: simsun; font-size: 10pt; background-color: rgb(248, 236, 216);"><strong>-classpath,-cp</strong>虚拟机在运行一个类时,需要将其装入内存,虚拟机搜索类的方式和顺序如下:</p><p style="margin-top: 0px; margin-bottom: 5px; padding-top: 0px; padding-bottom: 0px; border: 0px; list-style: none; word-wrap: normal; word-break: normal; line-height: 20px; color: rgb(70, 70, 70); font-family: simsun; font-size: 10pt; background-color: rgb(248, 236, 216);">Bootstrap classes,Extension classes,User classes。</p><p style="margin-top: 0px; margin-bottom: 5px; padding-top: 0px; padding-bottom: 0px; border: 0px; list-style: none; word-wrap: normal; word-break: normal; line-height: 20px; color: rgb(70, 70, 70); font-family: simsun; font-size: 10pt; background-color: rgb(248, 236, 216);">Bootstrap 中的路径是虚拟机自带的jar或zip文件,虚拟机首先搜索这些包文件,用System.getProperty("sun.boot.class.path")可得到虚拟机搜索的包名。</p><p style="margin-top: 0px; margin-bottom: 5px; padding-top: 0px; padding-bottom: 0px; border: 0px; list-style: none; word-wrap: normal; word-break: normal; line-height: 20px; color: rgb(70, 70, 70); font-family: simsun; font-size: 10pt; background-color: rgb(248, 236, 216);">Extension是位于jre\lib\ext目录下的jar文件,虚拟机在搜索完Bootstrap后就搜索该目录下的jar文件。用System. getProperty("java.ext.dirs”)可得到虚拟机使用Extension搜索路径。</p><p style="margin-top: 0px; margin-bottom: 5px; padding-top: 0px; padding-bottom: 0px; border: 0px; list-style: none; word-wrap: normal; word-break: normal; line-height: 20px; color: rgb(70, 70, 70); font-family: simsun; font-size: 10pt; background-color: rgb(248, 236, 216);">User classes搜索顺序为当前目录、环境变量 CLASSPATH、-classpath。</p><p style="margin-top: 0px; margin-bottom: 5px; padding-top: 0px; padding-bottom: 0px; border: 0px; list-style: none; word-wrap: normal; word-break: normal; line-height: 20px; color: rgb(70, 70, 70); font-family: simsun; font-size: 10pt; background-color: rgb(248, 236, 216);">-classpath告知虚拟机搜索目录名、jar文档名、zip文档名,之间用分号;分隔。</p><p style="margin-top: 0px; margin-bottom: 5px; padding-top: 0px; padding-bottom: 0px; border: 0px; list-style: none; word-wrap: normal; word-break: normal; line-height: 20px; color: rgb(70, 70, 70); font-family: simsun; font-size: 10pt; background-color: rgb(248, 236, 216);">例如当你自己开发了公共类并包装成一个common.jar包,在使用common.jar中的类时,就需要用-classpath common.jar 告诉虚拟机从common.jar中查找该类,否则虚拟机就会抛出java.lang.NoClassDefFoundError异常,表明未找到类定义。</p><p style="margin-top: 0px; margin-bottom: 5px; padding-top: 0px; padding-bottom: 0px; border: 0px; list-style: none; word-wrap: normal; word-break: normal; line-height: 20px; color: rgb(70, 70, 70); font-family: simsun; font-size: 10pt; background-color: rgb(248, 236, 216);">在运行时可用System.getProperty(“java.class.path”)得到虚拟机查找类的路径。</p><p style="margin-top: 0px; margin-bottom: 5px; padding-top: 0px; padding-bottom: 0px; border: 0px; list-style: none; word-wrap: normal; word-break: normal; line-height: 20px; color: rgb(70, 70, 70); font-family: simsun; font-size: 10pt; background-color: rgb(248, 236, 216);">使用-classpath后虚拟机将不再使用CLASSPATH中的类搜索路径,如果-classpath和CLASSPATH都没有设置,则虚拟机使用当前路径(.)作为类搜索路径。</p><p style="margin-top: 0px; margin-bottom: 5px; padding-top: 0px; padding-bottom: 0px; border: 0px; list-style: none; word-wrap: normal; word-break: normal; line-height: 20px; color: rgb(70, 70, 70); font-family: simsun; font-size: 10pt; background-color: rgb(248, 236, 216);">推荐使用-classpath来定义虚拟机要搜索的类路径,而不要使用环境变量CLASSPATH的搜索路径,以减少多个项目同时使用CLASSPATH时存在的潜在冲突。例如应用1要使用a1.0.jar中的类G,应用2要使用a2.0.jar中的类G,a2.0.jar是a1.0.jar的升级包,当a1.0.jar,a2.0.jar都在CLASSPATH中,虚拟机搜索到第一个包中的类G时就停止搜索,如果应用1应用2的虚拟机都从CLASSPATH中搜索,就会有一个应用得不到正确版本的类G。</p>
<span style="padding: 0px; margin: 0px; font-family: 'Microsoft YaHei', Verdana, sans-serif, 宋体; letter-spacing: 0.5px; line-height: 1.8; font-size: 16px; color: rgb(255, 0, 0);">java -cp .;c:\dir1\lib.jar Test  </span><br style="padding: 0px; margin: 0px; color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', Verdana, sans-serif, 宋体; font-size: 12.5px; letter-spacing: 0.5px; line-height: 22.5px;" /><span style="padding: 0px; margin: 0px; color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', Verdana, sans-serif, 宋体; font-size: 12.5px; letter-spacing: 0.5px; line-height: 1.8;">  </span><br style="padding: 0px; margin: 0px; color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', Verdana, sans-serif, 宋体; font-size: 12.5px; letter-spacing: 0.5px; line-height: 22.5px;" /><span style="padding: 0px; margin: 0px; color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', Verdana, sans-serif, 宋体; font-size: 12.5px; letter-spacing: 0.5px; line-height: 1.8;">-cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库,jar包之类,需要全路径到jar包,</span><span style="padding: 0px; margin: 0px; font-family: 'Microsoft YaHei', Verdana, sans-serif, 宋体; font-size: 12.5px; letter-spacing: 0.5px; line-height: 22.5px; color: rgb(255, 0, 0);"><span style="padding: 0px; margin: 0px;"><span style="padding: 0px; margin: 0px; line-height: 1.8;">window上分号“;”分隔,linux上是分号“:”分隔。</span></span></span><span style="padding: 0px; margin: 0px; color: rgb(51, 51, 51); font-family: 'Microsoft YaHei', Verdana, sans-serif, 宋体; font-size: 12.5px; letter-spacing: 0.5px; line-height: 1.8;">不支持通配符,需要列出所有jar包,用一点“.”代表当前路径。</span>
<pre name="code" class="java">-D<propertyName>=value
在虚拟机的系统属性中设置属性名/值对,运行在此虚拟机之上的应用程序可用System.getProperty(“propertyName”)得到value的值。
如果value中有空格,则需要用双引号将该值括起来,如-Dname=”space string”
该参数通常用于设置系统级全局变量值,如配置文件路径,应为该属性在程序中任何地方都可访问。

<p style="margin-top: 0px; margin-bottom: 5px; padding-top: 0px; padding-bottom: 0px; border: 0px; list-style: none; word-wrap: normal; word-break: normal; line-height: 20px; color: rgb(70, 70, 70); font-family: simsun; font-size: 10pt; background-color: rgb(248, 236, 216);"><strong>-Xms<size></strong>设置虚拟机可用内存堆的初始大小,缺省单位为字节,该大小为1024的整数倍并且要大于1MB,可用k(K)或m(M)为单位来设置较大的内存数。初始堆大小为2MB。例如:-Xms6400K,-Xms256M</p><p style="margin-top: 0px; margin-bottom: 5px; padding-top: 0px; padding-bottom: 0px; border: 0px; list-style: none; word-wrap: normal; word-break: normal; line-height: 20px; color: rgb(70, 70, 70); font-family: simsun; font-size: 10pt; background-color: rgb(248, 236, 216);"><strong>-Xmx<size></strong>设置虚拟机内存堆的最大可用大小,缺省单位为字节。该值必须为1024整数倍,并且要大于2MB。可用k(K)或m(M)为单位来设置较大的内存数。缺省堆最大值为64MB。例如:-Xmx81920K,-Xmx80M当应用程序申请了大内存运行时虚拟机抛出java.lang.OutOfMemoryError: Java heap space错误,就需要使用-Xmx设置较大的可用内存堆。</p><p style="margin-top: 0px; margin-bottom: 5px; padding-top: 0px; padding-bottom: 0px; border: 0px; list-style: none; word-wrap: normal; word-break: normal; line-height: 20px; color: rgb(70, 70, 70); font-family: simsun; font-size: 10pt; background-color: rgb(248, 236, 216);"><strong>-Xss<size></strong>设置线程栈的大小,缺省单位为字节。与-Xmx类似,也可用K或M来设置较大的值。通常操作系统分配给线程栈的缺省大小为1MB。另外也可在java中创建线程对象时设置栈的大小,构造函数原型为Thread(ThreadGroup group, Runnable target, String name, long stackSize)。</p><p style="margin-top: 0px; margin-bottom: 5px; padding-top: 0px; padding-bottom: 0px; border: 0px; list-style: none; word-wrap: normal; word-break: normal; line-height: 20px; color: rgb(70, 70, 70); font-family: simsun; font-size: 10pt; background-color: rgb(248, 236, 216);"><strong>-Xprof</strong>输出CPU运行时的诊断信息。</p>

-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:$DIR_LOG/xxx.log
0 0