Mac OS X的Java虚拟机除了具有标准的HotSpot虚拟机的选项之外,还支持很多非标准的选项(-X和-XX),本章列出了这些选项以及一些值得注意的例外事项。
请注意: 除非特别声明,否则在一个选项中指定的bytes(字节)都是作为参数。您也可以分别通过k或者m这两个字母来指定千个字节或者兆个字节(大小写都可以)。例如,下面的几种形式都是表示字节数:4194301,4096k,4096K,4m,和4M。
一般选项
-server
在Mac OS X中没有特别的服务器虚拟机(server VM)。在激活java的时候可以使用 -server 选项,但这并不是启动另外的虚拟机,它还是启动客户虚拟机(client VM),只是这个虚拟机针对服务器的使用环境进行了调优。这些调优包括:
* 在共享档案的生成过程中使用不同的类列表,这个列表中不包括GUI类(见“Mac OS X的Java共享档案”部分)。
* 增加Java堆的尺寸。
* 增加Eden代的内存空间的尺寸。
* 打开线程的本地Eden垃圾收集器(garbage collection)。
-X
显示一个非标准虚拟机选项的简要描述。
-Xbootclasspath:path
指定一个目录以及JAR和ZIP档案的列表,作为搜索启动类的范围。列表中各项之间的分隔符为冒号(:)。
-Xfuture
对类文件执行严格的格式检查。这个选项强制Java对是否遵守类文件规范做更加严格的检查,而缺省的检查只是基于Java 1.1.x的标准。您应该使用这个选项来对代码进行测试,以便确保这些代码在未来的Java版本中能够工作,这些未来的版本可能强制进行更为严格的类文件格式检查。
-Xprof
把运行程序详细的行为分析数据发送给标准输出。在产品级的代码中不能使用这个选项。
-Xrs
和-XX:+ReduceSignalUsage选项一样。
-XX:+ReduceSignalUsage
正常情况下,Java响应SIGHUP,SIGINT,和SIGTERM信号。如果指定了这个选项,则Java会忽略这些信号,您要根据具体的需要在本地代码中实现这些信号的处理函数,同时还要在System.exit()中实现相关的关闭例程。
-XX:ReservedCodeCacheSize=size in bytes
设置最大的代码缓存的大小,缺省情况下是32(32M)。
-XX:-PrintJavaStackAtFatalState
缺省情况下,当本地代码崩溃时,Java会产生回溯(backtraces)信息。如果您在Java的错误报告中看到了崩溃的信息,则可以把这个选项关闭。
Mac OS X 专用选项
-Xdock:name=applicationName
设定应用程序在Dock和菜单条上显示的名称。如果这个选项没有被设定,则缺省情况下Mac OS X会显示主类的全名。您只需要对那些从命令行或者JAR文件中启动的程序设定这个选项,那些可以双击的应用程序包则从Info.plist文件中读取正确的显示名。
-XX:+UseFileLocking
这个选项用来激活Carbon文件的锁定功能,缺省情况下关闭。如果您的Java应用程序和一些文件相互作用,而这些文件同时又受到一些Carbon应用程序的影响,则您需要使用这个选项,它可以避免应用程序修改那些正在被别的程序访问的文件。
堆的尺寸
-Xmssize in bytes
设定Java堆的初始尺寸,缺省尺寸是2097152 (2MB)。这个值必须是1024个字节(1KB)的倍数,且比它大。(-server选项把缺省尺寸增加到32M。)
-Xmnsize in bytes
为Eden对象设定初始Java堆的大小,缺省值为640K。(-server选项把缺省尺寸增加到2M。)
-Xmxsize in bytes
设定Java堆的最大尺寸,缺省值为64M,(-server选项把缺省尺寸增加到128M。) 最大的堆尺寸达到将近2GB(2048MB)。
请注意:很多垃圾收集器的选项依赖于堆大小的设定。请在微调垃圾收集器使用内存空间的方式之前,确认是否已经正确设定了堆的尺寸。
垃圾收集:内存的使用
-XX:MinHeapFreeRatio=percentage as a whole number
修改垃圾回收之后堆中可用内存的最小百分比,缺省值是40。如果垃圾回收后至少还有40%的堆内存没有被释放,则系统将增加堆的尺寸。
-XX:MaxHeapFreeRatio=percentage as a whole number
改变垃圾回收之后和堆内存缩小之前可用堆内存的最大百分比,缺省值为70。这意味着如果在垃圾回收之后还有大于70%的堆内存,则系统就会减少堆的尺寸。
-XX:NewSize=size in bytes
为已分配内存的对象中的Eden代设置缺省的内存尺寸。它的缺省值是640K。(-server选项把缺省尺寸增加到2M。)
-XX:MaxNewSize=size in bytes
允许您改变初期对象空间的上限,新建对象所需的内存就是从这个空间中分配来的,这个选项的缺省值是640K。(-server选项把缺省尺寸增加到2M。)
-XX:NewRatio=value
改变新旧空间的尺寸比例,这个比例的缺省值是8,意思是新空间的尺寸是旧空间的1/8。
-XX:SurvivorRatio=number
改变Eden对象空间和残存空间的尺寸比例,这个比例的缺省值是10,意思是Eden对象空间的尺寸比残存空间大survivorRatio+2倍。
-XX:TargetSurvivorRatio=percentage
设定您所期望的空间提取后被使用的残存空间的百分比,缺省值是50。
-XX:MaxPermSize=size in MB
长久代(permanent generation)的尺寸,缺省值为32(32MB)。
垃圾收集: 一般设定
-Xincgc
Mac OS X不支持这个选项,不支持这种训练式的垃圾收集器。
-Xnoclassgc
禁用类的垃圾收集。
-XX:+UseConcMarkSweepGC
激活标志和清除同时进行的垃圾收集活动,这个选项对多处理器的计算机有效。
-XX:+UseParallelGC
激活并行的垃圾收集活动,这个选项只对多处理器的计算机有效。
-XX:-DisableExplicitGC
忽略代码中对System.gc()的显式调用。虚拟机仍然按照正常的机制进行垃圾收集。这个选项禁止在代码中强制执行垃圾收集。
-XX:+PrintTenuringDistribution
打印初期代中已分配内存的对象占用内存时间的信息。
编译
-Xint
只在解释(interperated)模式下运行虚拟机。如果使用这个选项,系统将不编译任何字节码。
-XX:CompileThreshold=value
在编译开始前改变方法调用(程序分支)的数目,缺省值是1000。
-XX:-InlineUnreachableCalls
缺省情况下,虚拟机对所有可能的代码进行方法内联处理(method inlining),以方便编译器进行优化。对这个选项进行设定会使较少的代码按照内联方法被编译。这样,那些正常情况下不会运行的代码,如例外处理,就不会被处理为内联代码,而只能在运行时进行解释。设定这个选项可能会大大降低性能。
-XX:+CITime
显示有多少时间花在编译过的代码上。
-XX:+PrintCompilation
在Java的方法被编译时,打印其的跟踪信息。
Threading
-XX:NewSizeThreadIncrease=size in KB
允许您指定每个活动线程会增加多少初期对象空间。这个选项在调节由于线程增加而增加的分配率时可能会有用。它的缺省值为16(16 kilobytes)。
-XX:ThreadStackSize=size in KB
改变线程栈的大小。缺省情况下,线程栈的大小就是操作系统所使用的栈的缺省大小。
-XX:+UseTLAB
激活线程本地的分配缓冲区。 使用这个缓冲区将使线程任务繁重的应用程序的内存分配更加具有可扩展性,大大提高内存分配的性能。这个选项在多处理器的计算机和Mac OS X Server上缺省打开。
共享
-XX:+PrintSharedSpace
打开共享的冗长输出。
-XX:-UseSharedSpaces
关闭共享。
分享到:
相关推荐
Java虚拟机(JVM)是Java编程语言的核心组成部分,它为Java程序提供了运行环境。微软版本的Java虚拟机是专为Windows操作系统设计的,使得在Windows系统上可以执行编译后的Java字节码(.class文件)。这个压缩包...
Java虚拟机(JVM)是Java程序的运行环境,提供了Java程序运行所需的各种资源和管理机制。在Java虚拟机运行过程中,我们可能需要使用各种命令工具来监控和诊断可能出现的问题。以下是一些常用的JVM命令工具及其知识点...
"Java虚拟机卸载指南" Java虚拟机(Java Virtual Machine,JVM)是Java平台的核心组件之一,负责将Java字节码转换为可在具体操作系统上执行的机器代码。然而,在某些情况下,用户可能需要卸载Java虚拟机,以解决...
Java虚拟机参数可以分为基本参数和扩展参数两类,基本参数用于设置虚拟机的运行模式和类搜索路径,而扩展参数则提供了更多的自定义选项。 基本参数 * -client和-server参数:用于设置虚拟机的运行模式,-client...
在Windows环境下编译Avian Java虚拟机是一项技术性较强的任务,涉及到多个步骤和知识点。Avian是一款轻量级、开源的Java虚拟机,它旨在提供一个小型、快速且可移植的JVM实现,适用于嵌入式设备和资源有限的环境。...
Sun JAVA虚拟机,全称Java Virtual Machine,是Java平台的核心组成部分,它负责解析并执行Java程序的字节码,使得Java代码能够在不同的操作系统上运行,实现了“一次编写,到处运行”的跨平台特性。Sun公司(后被...
### Java虚拟机在ARM_Linux平台的移植全过程 #### 一、引言 随着软件行业的开源风气日益增强,开源的Java虚拟机(JVM)的开发变得越来越活跃。市场上已经出现了一系列成熟且易于移植的开源Java虚拟机,例如Kaffe、...
### 在Windows XP中卸载微软Java虚拟机 随着信息技术的发展,操作系统与软件的兼容性问题逐渐成为用户关注的重点。在Windows XP系统中,由于微软官方不再支持Java虚拟机(MSJVM),用户需要掌握手动卸载的方法以便...
根据给定的文件标题“Java虚拟机规范”及其描述“Java虚拟机规范,了解虚拟机原理”,我们可以深入了解Java虚拟机(JVM)的核心概念和技术细节。虽然提供的部分内容未能直接展示文本内容,但从标题和描述中可以推断出...
`cpp-YVM` 是一个用C语言编写的Java虚拟机实现,它旨在提供对Java语言核心功能的广泛支持。尽管C语言通常用于系统级编程或性能关键的应用,但`cpp-YVM`项目展示了如何利用其低级别控制和高效特性来构建一个虚拟机。...
Java JVM 虚拟机选项 Xms Xmx PermSize MaxPermSize 区别 Java JVM 虚拟机选项 Xms Xmx PermSize MaxPermSize 是 Java 虚拟机(JVM)中用于配置内存管理的参数。这些参数控制着 JVM 中的堆内存和非堆内存的分配。 ...
Java虚拟机(JVM)是Java程序运行的核心组件,它负责将字节码转换为机器码,使得Java程序能够在各种操作系统上无缝运行。JVM的参数配置是优化Java应用程序性能的关键环节,对于开发者来说,理解和掌握JVM参数的设置...
Java虚拟机(JVM)调优是提升Java应用程序性能的关键环节,主要涉及到内存管理、垃圾收集(GC)、线程调度等多个方面。JVM调优的目标是优化程序运行效率,减少不必要的系统资源消耗,特别是减少全GC(Full GC)的...
### Java虚拟机安装知识点 #### 一、Java虚拟机(JVM)简介 Java虚拟机(JVM)是一种能够执行Java字节码(Bytecode)的虚拟机。JVM可以在各种不同的操作系统平台上运行,它提供了运行Java程序所需的环境。由于JVM的存在,...
**深入理解JAVA虚拟机实用技巧案例讲解** Java虚拟机(JVM)是Java程序的核心运行环境,它负责解析字节码并执行Java程序。在实际开发中,了解JVM的工作原理和优化技巧对于提高程序性能至关重要。以下是一些关键知识...
### JAVA虚拟机的内存管理详解 #### 一、引言 在Java 2平台的强大支持下,J2SE能够自动管理内存,这大大减轻了开发者的负担,让他们不必再进行复杂的显式内存管理工作。本文档旨在对Sun J2SE 5.0版本中的Java ...
《深入Java虚拟机源码》一书主要涵盖了Java虚拟机(JVM)的内部工作原理,包括类加载机制、内存管理、字节码执行引擎、垃圾收集算法、编译优化等多个核心主题。以下是对这些章节内容的详细阐述: 1. **第3章:类...
《实战JAVA虚拟机 (JVM故障诊断与性能优化)》是一本深度剖析JVM的实践指南,旨在帮助读者掌握JVM的内部工作机制,提升故障排查和性能调优的能力。本书可与周志明的《深入理解JAVA虚拟机》相媲美,提供了丰富的源码...