虚拟机中除了程序计数器不会发生内存溢出,其他几个内存区域都可能发生内存溢出。
可在eclipseIDE中的Debug/Debug Configuration 中设置启动参数:
堆设置:
-Xms20m -Xmx20m :这两个参数设置虚拟机堆内存大小,前面是堆的最小值,后面是堆的最大值,设置的一样可避免堆内存自动扩展。
-Xmn2g:设置年轻代大小为2G.整个堆大小=年轻代大小 + 年老代大小 + 持久代大小.持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小.此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8.
-Xss128k:设置每个线程的堆栈大小.JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K.更具应用的线程所需内存大小进行 调整.在相同物理内存下,减小这个值能生成更多的线程.但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右.
-XX:NewRatio=n:设置年轻代和年老代的比值.如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值.注意Survivor区有两个.如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5
栈和方法区设置:
-Xoss :设置本地方法栈大小。对于HotSpot来说,并不区分虚拟机栈和本地方法栈,此参数实际上是无效的。栈容量只由-Xss参数设定。
-XX:MaxPermSize:最大方法区容量
-XX:PermSize:设置方法区大小
-XX:+HeapDumpOnOutOfMemoryError
垃圾回收统计信息:
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:filename
GC收集器的类型:
JVM给了三种选择:串行收集器,并行收集器,并发收集器,但是串行收集器只适用于小数据量的情况,所以这里的选择主要针对并行收集器和并发收集器.默认 情况下,JDK5.0以前都是使用串行收集器,如果想使用其他收集器需要在启动时加入相应参数.JDK5.0以后,JVM会根据当前系统配置进行判断.
1.并行收集器:以到达一定的吞吐量为目标,适用于科学技术和后台处理等。
-XX:+UseParallelGC:选择垃圾收集器为并行收集器.此配置仅对年轻代有效.即上述配置下,年轻代使用并发收集,而年老代仍旧使用串行收集.
-XX:ParallelGCThreads=20:配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收.此值最好配置与处理器数目相等.
-XX:+UseParallelOldGC:配置年老代垃圾收集方式为并行收集.JDK6.0支持对年老代并行收集.
-XX:MaxGCPauseMillis=100:设置每次年轻代垃圾回收的最长时间,如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值.
-XX:+UseAdaptiveSizePolicy:设置此选项后,并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低相应时间或者收集频率等,此值建议使用并行收集器时,一直打开.
-XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比.公式为1/(1+n)
2.并发收集器:保证系统的响应时间,减少垃圾收集时的停顿时间.适用于应用服务器,电信领域等.
-XX:+CMSIncrementalMode:设置为增量模式.适用于单CPU情况.
-XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数.并行收集线程数.
分享到:
相关推荐
Java虚拟机参数可以分为基本参数和扩展参数两类,基本参数用于设置虚拟机的运行模式和类搜索路径,而扩展参数则提供了更多的自定义选项。 基本参数 * -client和-server参数:用于设置虚拟机的运行模式,-client...
本文将深入探讨Java虚拟机的参数配置,特别是针对MyEclipse开发环境中遇到的内存不足问题。 首先,Java虚拟机参数配置是优化JVM性能的关键步骤。Java程序在启动时可以设置一系列参数,这些参数分为两种类型:标准...
本文将围绕"java虚拟机参数配置"这一主题展开讨论,重点解析Heap Space与PermGen Space的配置细节。 ### Heap Space Heap Space是Java堆内存的一部分,用于存储对象实例。当Java程序启动时,JVM会为每个进程分配一...
系统core和java虚拟机异常退出日志设置 系统core和java虚拟机异常退出日志设置是...通过配置proc/sys/kernel/core_pattern文件和Java启动参数,我们可以控制核心崩溃文件和Java虚拟机崩溃日志的保存位置和命名规则。
堆是所有对象实例和数组的内存空间,它在Java虚拟机启动时被创建。垃圾回收器负责释放堆中不再使用的对象所占用的内存空间。而栈则是线程私有的,它存储着方法的局部变量和部分结果,以及方法调用和返回的指令序列。...
- 理解JVM规范有助于对Java程序进行性能调优,如调整堆大小、设置垃圾回收参数等。 Java 虚拟机规范是Java平台的重要组成部分,它不仅保证了Java语言的跨平台特性,也为Java的运行提供了强大的支撑。Java开发人员...
-Xbootclasspath参数用于设置引导类路径,这是Java虚拟机加载核心类库的地方。默认情况下,JVM会从系统的JAVA_HOME/lib目录下加载rt.jar等核心类库。通过-Xbootclasspath参数,我们可以自定义这个路径,这在一些特殊...
Java虚拟机(JVM)是Java程序运行的核心,它为Java提供了一个跨平台的执行环境。深入理解JVM对于任何Java开发者来说都是至关重要的,因为它直接影响到程序的性能、稳定性和内存管理。以下是对"深入理解Java虚拟机...
8. **JVM参数设置**:了解如何调整JVM的启动参数,如-Xms、-Xmx、-XX:MaxPermSize等,对于优化应用程序的内存使用和提升性能至关重要。 9. **类文件结构**:Java类文件包含了类的元数据和字节码,理解类文件的结构...
本篇文章将详细解析Java虚拟机的一些关键参数及其作用,帮助开发者更好地理解和优化JVM的性能。 1. **-XX:+<option> 和 -XX:-** 这两种选项分别用于启用或禁用特定的JVM特性。例如,`-XX:+AllowUserSignalHandlers...
这包括通用的JVM启动参数、类加载器参数、内存分配参数、线程参数等。理解并熟练运用这些参数,可以有效控制JVM的行为,优化应用程序的性能,如通过调整-Xms和-Xmx参数来控制堆内存的初始和最大值,防止因内存分配...
通过启动参数调整JVM内存分配,如-Xms、-Xmx设定堆内存大小,-XX:MetaspaceSize设置方法区大小。 深入理解JVM不仅有助于写出高效稳定的Java程序,还能帮助开发者解决复杂的运行时问题。通过持续学习和实践,开发者...
《实战JAVA虚拟机》这本书是Java开发者深入理解Java运行机制的宝贵资料。它不仅涵盖了Java虚拟机(JVM)的基础知识,还详细解析了JVM的工作原理和优化技巧,帮助开发者提升程序性能,解决实际问题。 一、Java虚拟机...
8. **JVM参数调整**:通过设置JVM启动参数,可以控制内存分配、垃圾回收策略、线程优先级等,这对于解决内存溢出、性能瓶颈等问题至关重要。 9. **源码分析**:随书源码提供了大量实战案例,读者可以通过阅读和运行...
### Java虚拟机(JVM)参数配置详解 #### 引言 在Java及J2EE大型应用的场景下,Java虚拟机(JVM)非标准参数的合理配置对于提升系统的整体性能至关重要。这些参数不仅影响着应用的运行效率,还直接关联到系统的稳定性...
每个Java应用启动时都会创建一个Java堆,它的大小可以在启动时通过参数设置。 ##### 4.3 Java虚拟机栈(Java Virtual Machine Stack) Java虚拟机栈是线程私有的,用于存储方法执行的局部变量表、操作数栈、动态链接...
- 合理设置JVM启动参数对于优化Java应用的性能至关重要。常见的参数包括-Xms、-Xmx用于控制堆内存大小,-XX:NewRatio用于设置年轻代与老年代的比例等。 2. **工具支持** - Java提供了丰富的工具用于监控和分析...
6. **JVM调优**:通过调整JVM参数,可以优化应用程序的性能,如设置堆大小、新生代与老年代的比例、垃圾收集器类型等。常用的JVM工具包括JConsole、VisualVM和JProfiler等,用于监控和分析JVM状态。 7. **异常处理*...