Java HotSpot 虚拟机选项详解(-X选项)

来源:互联网 发布:小米平板2windows版本 编辑:程序博客网 时间:2024/05/16 04:47

-X选项(非标准选项,不保证所有虚拟机实现都支持的选项,并且可以在不事先通知的情况下在JDK的后续版本中进行改变)


-Xint
只工作在解释模式下。不能编译成机器码,所有的字节码都解释执行。Java HotSpot客户端虚拟机自适应编译提供的性能优化不能工作在此模式下。
-Xbatch
禁用后台编译功能。通常虚拟机将编译方法作为后台任务执行,在后台编译完成之前,采用解释方式执行方法。-Xbatch选项禁用后台编译功能,所以所有方法的编译作为前台任务直到结束。
-Xdebug
启动虚拟机,同时支持 JVMDI 。 JVMDI 已经被废弃并不再用于支持J2SE 5.0的调试功能,所以J2SE 5.0.进行调试时不再需要这个选项。
-Xbootclasspath:bootclasspath
指定一个由逗号分隔的目录、JAR文件和ZIP文件组成的列表,用于搜索引导类。这些引导类被用于替换Java 2 SDK中包含的引导类。注意:使用这个选项来重载rt.jar中的类的应用不应该被部署,因为这样做违反Java 2运行时环境二进制代码许可。


-Xbootclasspath/a:path
指定一个有逗号分隔的目录、JAR文件和ZIP文件组成的路径,附加在默认的引导类路径的后面。


-Xbootclasspath/p:path
指定一个有逗号分隔的目录、JAR文件和ZIP文件组成的路径,附加在默认的引导类路径的前面。注意:使用这个选项来重写rt.jar中的类的应用不应该被部署,因为这样做违反Java 2运行时环境二进制代码许可。


-Xcheck:jni
对Java本地接口(JNI)函数执行额外的检查。确切地,Java虚拟机验证传递给JNI函数的参数和处理JNI请求前运行时环境的数据。遇到任何无效数据表式本地代码中存在问题,在这种情况下Java虚拟机将以遇到致命错误而中断。使用这个选项将降低性能。


-Xfuture
执行严格的类文件格式检查。为了向后兼容,Java 2 SDK虚拟机执行的默认类文件格式检查比1.1.x版本JDK要宽松。-Xfuture标志打开严格类文件格式检查,强制类文件完全符合类文件格式规范。鼓励开发人员在开发新代码时使用此选项,因为严格的类文件格式检查在将来的Java应用程序启动程序中将变为默认设置。


-Xnoclassgc
禁用类垃圾回收功能。
-Xincgc
启用增量垃圾回收。增量垃圾回收减少程序执行期间执行垃圾回收造成的长时间停顿,但默认是禁用的。增量垃圾回收与程序并行执行,因此执行垃圾回收时会减少应用程序可获得的处理器能力。
-Xloggc:file
汇报每个垃圾回收事件(与-verbose:gc相同),并将日志信息记录到指定文件file。除了 -verbose:gc 提供的信息,每个汇报事件也提供与第一次垃圾回收的时间间隔(秒)。

使用本地文件存储日志,避免因为网络延时影响Java虚拟机的运行。当文件过大时可能被截取前面的部分,并继续向该文件中写入日志。如果包含同时还包含-verbose:gc 选项时,这个选项覆盖-verbose:gc 选项。


-Xmsn
         
指定内存池分配的初始字节数。这个值必须是1024的倍数并且大于1MB。附加字符k或者K表式千字节,附加字符m或者M表式兆字节。默认值是2MB。例如:
-Xms6291456
-Xms6144k
-Xms6m
-Xmxn
指定内存池分配的最大字节数。这个值必须是1024的倍数并且要大于2M。附加字符k或者K表式千字节,附加字符m或者M表式兆字节。默认值是64MB。例如:
-Xmx83886080
-Xmx81920k
-Xmx80m
-Xprof
分析运行中的程序,并将分析数据发送到标准输出。这个选项作为开发时一个有用的工具进行提供,目的不是用于生成环境。
-Xrunhprof[:help][:<suboption>=<value>,...]
启用cpu,堆或者监视器分析。这个选线通常后面带有由逗号分隔的"<suboption>=<value>"形式的键值对的列表。运行java -Xrunhprof:help 命令获取子选项列表和他们的默认值。
-Xrs
减少Java虚拟机(JVM)使用的操作系统信号。这个选项始于J2SE 1.3.1。

J2SE 1.3.0中,加入了关闭钩子功能,允许顺序关闭Java应用程序。目的是使用户清理代码(例如关闭数据库连接)在关闭,甚至是JVM突然中止时能够执行。

JVM检测实现了JVM异常中止关闭钩子的控制台控制事件。确切的说,JVM注册一个控制台控制处理器,它处理关闭钩子,并针对CTRL_C_EVENT, CTRL_CLOSE_EVENT,

1.2以前,JVM使用一个类似的机制实现用于调试的转储线程堆栈。Sun的JVM使用CTRL_BREAK_EVENT事件执行线程转储。

如果JVM作为服务运行(例如,web服务器的servlet引擎),它能收到CTRL_LOGOFF_EVENT事件,但是不应该立即关闭,因为操作系统将不中止该进程。为了避免这种可能的干扰(中止进程),-Xrs命令行选项从J2SE 1.3.1被加入。当-Xrs选项用于Sun的JVM虚拟机,JVM不会安装控制台控制处理程序,意味着JVM不检测和处理CTRL_C_EVENT, CTRL_CLOSE_EVENT, CTRL_LOGOFF_EVENT和 CTRL_SHUTDOWN_EVENT事件。

指定-Xrs有两个结果 :

  • 不支持通过Ctrl-Break线程转储。
  • 用户代码负责调用关闭钩子,例如当JVM将被关闭时调用System.exit()。


-Xssn
设置线程堆大小。
原创粉丝点击