- 浏览: 525905 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (161)
- 多线程与并发编程 (20)
- 算法和数据结构 (8)
- 缓存 (0)
- HttpClient (2)
- 疑难杂症 (11)
- Java内存管理 (17)
- 分布式开发 (14)
- Linux常用命令 (10)
- OSGI (0)
- UML (2)
- 趣味面试题 (5)
- 设计模式 (8)
- Java类加载 (2)
- JSTL (1)
- Web 服务器 (4)
- IT人生 (3)
- Java基础 (11)
- Flash技术 (7)
- 新知识 (3)
- 常用速备速查 (4)
- 版本控制 (1)
- Java集合工具类 (6)
- web前端技术 (1)
- 趣味话题 (1)
- 安全 (0)
- 架构设计 (5)
- Spring (4)
- 负载均衡技术 (2)
- 持久层技术 (2)
- MySQL单机多实例方案 (1)
- 收藏备用 (0)
- 性能优化 (3)
最新评论
-
liuwuhen:
...
Pushlet的工作原理 -
fbwfbi:
fengchuizhuming 写道楼主的完全正确。鉴定完毕楼 ...
硬件同步原语(CAS)理论 -
passerby_whu:
uule 写道这个测试后结果为:“testPageConten ...
FutureTask的使用方法和使用实例 -
fengchuizhuming:
楼主的完全正确。鉴定完毕
硬件同步原语(CAS)理论 -
edwardjuice:
FutureTask的使用方法和使用实例
今天终于有所斩获,发现了Sun Hotspot JVM GC最全的参数调整列表:
http://blogs.sun.com/watt/resource/jvm-options-list.html
http://www.cnblogs.com/totti19841106/archive/2009/01/12/1374274.html
有关JVM默认值的参考资料如下:
https://gist.github.com/827140
http://hg.openjdk.java.net/jdk6/jdk6/hotspot/file/tip/src/share/vm/runtime/globals.hpp
Java 5以上版本(包含Java 5)GC的调整参数包含以下内容:
1.虚拟机GC性能调整工具参数:
–XX:+PrintGCDetails:
–XX:+PrintGCTimeStamps:
-XX:-DisableExplicitGC
-XX:+UseGCOverheadLimit
-XX:+StringCache
-XX:LargePageSizeInBytes=4m
-Xnoclassgc
-XX:MaxTenuringThreshold=<n>
指定一个 object 在经历了 n 次 young gc 后转移到 old generation 区 , 在 linux64 的 java6 下默认值是 15, 此参数对于 throughput collector 无效 , 如 :-XX:MaxTenuringThreshold=31
-XX:+UseFastAccessorMethods
get,set 方法转成本地代码
-XX:+PrintGCApplicationStoppedTime
打应垃圾收集时 , 系统的停顿时间 , 如 :
Total time for which application threads were stopped: 0.0225920 seconds
-Xmn<n>
指定 jvm 中 New Generation 的大小 , 如 :-Xmn256m。 这个参数很影响性能, 如果你的程序需要比较多的临时内存, 建议设置到512M, 如果用的少, 尽量降低这个数值, 一般来说128/256足以使用了。
-Xss<n>
指定线程桟大小 , 如 :-Xss128k, 一般来说,webx框架下的应用需要256K。 如果你的程序有大规模的递归行为, 请考虑设置到512K/1M。 这个需要全面的测试才能知道。 不过, 256K已经很大了。 这个参数对性能的影响比较大的。
-XX:PretenureSizeThreshold =<value>:当对象大于该值就直接分配到堆的 ‘老生代’ 区域
2.GC的关键选项参数:
2.1堆和代的大小调整参数
Option | Default | Description |
-Xms<n> | Initial size, in bytes, of the heap. | |
–Xmx<n> | Maximum size, in bytes, of the heap. | |
–XX:MinHeapFreeRatio=minimum and –XX:MaxHeapFreeRatio=maximum |
40 (min) 70 (max) |
Target range for the proportion of free space to total heap size. These are applied per generation. For example, if minimum is 30 and the percent of free space in a generation falls below 30%, the size of the generation is expanded so as to have 30% of the space free. Similarly, if maximum is 60 and the percent of free space exceeds 60%, the size of the generation is shrunk so as to have only 60% of the space free. |
–XX:NewSize=n | Default initial size of the new (young) generation in bytes. |
|
–XX:NewRatio=n | 2 on client JVM, 8 on server JVM |
Ratio between the young and old generations. For example, if n is 3, then the ratio is 1:3 and the combined size of Eden and the survivor spaces is one fourth of the total size of the young and old generations. |
–XX:SurvivorRatio=n | 32 | Ratio between each survivor space and Eden. For example, if n is 7, each survivor space is one–ninth of the young generation (not one–eighth, because there are two survivor spaces). |
–XX:MaxPermSize=n | Platform–dependent | Maximum size of the permanent generation. |
2.3垃圾回收器选择参数
Option | Garbage Collector Selected |
–XX:+UseSerialGC | 串行回收器 |
–XX:+UseParallelGC | 并行回收器 |
–XX:+UseParallelOldGC | Parallel compacting |
–XX:+UseConcMarkSweepGC | Concurrent mark–sweep (CMS) |
2.4并行(Java5 以及以上版本-Server 模式默认的垃圾回收器)和并行压缩垃圾回收器的GC调整参数
Option | Default | Description |
–XX:ParallelGCThreads=n | The number of CPUs | Number of garbage collector threads. |
–XX:MaxGCPauseMillis=n | No default | Indicates to the collector that pause times of n milliseconds or less are desired. |
–XX:GCTimeRatio=n | 99 | Number that sets a goal that 1/(1+n) of the total time be spent on garbage collection. |
2.5 CMS垃圾回收器的GC调整参数
Option | Default | Description |
–XX:+CMSIncrementalMode | Disabled | Enables a mode in which the concurrent phases are done incrementally, periodically stopping the concurrent phase to yield back the processor to the application. |
–XX:+CMSIncrementalPacing | Disabled | Enables automatic control of the amount of work the CMS collector is allowed to do before giving up the processor, based on application behavior. |
–XX:ParallelGCThreads=n | The number of CPUs | Number of garbage collector threads for the parallel young generation collections and for the parallel parts of the old generation collections. |
补充参数:
-XX:CMSInitiatingOccupancyFraction
-XX:+CMSPermGenSweepingEnabled
-XX:+CMSClassUnloadingEnabled
-XX:+UseCMSInitiatingOccupancyOnly
指示只有在 old generation 在使用了初始化的比例后 concurrent collector 启动收集
http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp
http://www.md.pp.ru/~eu/jdk6options.html
发表评论
-
JVM四种对象引用类型
2011-05-17 16:27 1590JVM 中将对象的引用分为了四种类型,不同的对象引用类型会造成 ... -
Garbage First - Card Table
2011-05-12 17:36 1530之前一直以为只是在Garbage First垃圾回收器中,有C ... -
Red5 0.7和0.9 版本配置远程JConsole监控
2010-12-12 16:23 2543JConsole可以帮助你监控虚拟机的状态,垃圾回收的时间,调 ... -
Java内存Dump文件查看和分析工具介绍
2010-12-06 16:51 15609为了查red5-0.7.0的内存泄露问题,由于dump文件太大 ... -
深入垃圾收集器与内存分配策略
2010-11-05 15:45 1422Java与C++之间有一堵由 ... -
实战OutOfMemoryError(转)
2010-11-05 15:41 1797实战 OutOfMemoryError 上述区域中 ... -
JVM 运行时区域划分(转载)
2010-11-05 15:39 1612VM 运行时数据区域 JVM 执行 Java ... -
使用jconsole远程监控linux下tomcat使用情况
2010-10-26 09:11 3704启动tomcat/bin/startup.sh中增加一下变量: ... -
Eclipse经常出现OutOfMemory错误,如何解决
2010-04-15 16:59 23112今天有个同事问我一个问题,他的Eclipse经常出现OutOf ... -
Java内存泄露示例代码总汇
2010-04-09 13:57 3596Java尽管采用自动的内存 ... -
HotSpot VM - OutOfMemory Error 总汇
2010-04-06 16:02 2248OutOfMemory Error表明Java 堆没有足够的内 ... -
Java内存管理-Permanent Space
2010-03-10 13:21 5025VM 的Permanent generation space, ... -
JVM -Server -Client 模式
2010-03-10 09:39 2801JVM -Server 与 -Client启动,最主要的差别在 ... -
Java内存管理-监控工具篇
2010-03-09 22:31 121001.JConsole Jconsole,Java ... -
Java内存管理基础篇 - Java内存回收-常见的垃圾回收策略
2010-03-08 16:33 1761Java的内存使用完之后,是通过JVM的GC进行回收的。 ... -
Java内存管理基础篇 - Java内存分配
2010-03-04 22:19 30001.简介 现摘录一段Java5内存管理白皮书中的 ...
相关推荐
### Sun JVM原理与内存管理 #### 一、Sun JDK 1.6 GC (Garbage Collector) Sun JDK 1.6 的垃圾收集器(GC)是其内存管理的关键组成部分,它负责自动地回收不再使用的对象所占用的内存。本文将详细介绍Sun JDK 1.6 GC...
Java虚拟机(JVM)是Java程序运行的基础,它的核心功能之一是垃圾收集(Garbage Collection, GC),这是Java语言的一大优势,但也因为其复杂性成为性能优化的关键环节。JVM调优通常涉及到内存配置、GC策略选择以及...
以上介绍的各种JVM工具和参数对于Java开发人员来说是非常重要的,它们能够帮助我们更好地理解和管理JVM的行为,从而提高应用程序的性能和稳定性。在实际应用中,根据具体情况选择合适的工具和参数进行配置和调优是...
理解并有效利用VisualGC插件,开发者可以更好地调整JVM参数,例如设置合适的堆大小、选择合适的GC算法、优化对象分配策略等,从而提高应用的性能和稳定性。在实际操作中,我们需要结合应用的业务特点和负载情况,...
3. **其他调优参数**:除了上述基础设置外,还有许多其他参数可用于进一步优化GC行为,例如调整新生代和老年代的比例、选择特定的垃圾回收算法等。 #### 32位与64位系统的堆大小差异 - 对于32位进程模型,进程的...
GCViewer是一款用于分析Java应用程序垃圾收集(Garbage Collection, GC)日志的开源工具,源自Tagtraum Industries的项目,并且在原作者停止开发后由其他人接手并继续更新,以支持Sun/Oracle Java 1.6及更高版本的...
Java虚拟机(JVM)是Java程序运行的基础,它提供了执行字节码的环境。不同公司根据JVM规范实现了自己的JRE(Java运行环境),如Oracle的Hotspot JDK、IBM的JDK、阿里巴巴的淘宝JDK等。Oracle通过收购Sun和BEA,将...
- 基于VisualGC提供的数据,开发者可以调整JVM参数,例如增大堆内存、调整新生代和老年代的比例,或者优化GC策略,以达到更高效的内存使用和减少垃圾收集的频率。 5. **使用方法**: - 首先,确保安装了VisualVM...
5. **Java SE 5/6**:这两个版本引入了泛型、枚举、可变参数等新特性,并对JVM进行了进一步优化。 6. **Java SE 7/8**:JVM在这些版本中引入了 Lambda 表达式、默认方法、类型推断等特性,以及G1垃圾收集器,增强了...
这些信息对于调优JVM参数,减少不必要的GC暂停,提升应用性能至关重要。 总的来说,VisualGC插件是VisualVM中不可或缺的一部分,它为开发者提供了深入洞察JVM内存管理的能力。掌握它的安装和使用,能够极大地提高...
4. **垃圾收集器配置**:提供对JVM垃圾收集器参数的查看和修改功能,方便开发者根据应用需求调整GC策略。 5. **类加载信息**:显示已加载类的数量和信息,有助于理解类加载过程和内存占用。 6. **线程分析**:结合...
java查看sun包源码 主要内容包括 :blue_heart: :blue_heart: :blue_heart: :blue_heart: :blue_heart: :blue_heart: jvm参数类型:alien: jinfo & jps(参数和进程查看):alien: jstat(类加载、垃圾收集、JIT 编译):...
- 基于实际情况调整JVM参数,如`-Xms`、`-Xmx`控制堆内存大小等。 4. **并发编程基础** - Java内存模型介绍:主内存与工作内存的概念。 - 锁的实现原理:偏向锁、轻量级锁、重量级锁的升级过程。 - 并发工具类...
2. **调整参数**:根据监控结果,调整JVM的垃圾收集器设置,如选择不同的GC策略,优化GC阈值等。 3. **性能调优**:结合其他VisualVM模块,如CPU和线程分析,全面优化应用程序的性能。 为了启用VisualGC插件,首先...
Sun JDK的HotSpot JVM提供了对增量式GC的支持,可以通过`-Xincgc`参数启用。HotSpot JVM的增量式GC采用Train算法,根据对象的使用频率和相关性将它们分组,并优先回收最老的对象,从而确保程序的连续运行。 `...
随着Oracle对Sun的收购,Java发展进入新的阶段,包括JDK 9的模块化和JDK 11的ZGC等。 2. **JVM内存模型**: JVM内存分为多个区域:方法区(Method Area)、堆区(Heap Area)、虚拟机栈(JVM Stacks)、本地方法栈...
### JVM的核心概念与工作机制 #### 一、Java编译过程概览 在Java开发中,源代码文件(`.java`)被编译成...以上参数对于理解Java程序在JVM上的执行机制至关重要,合理地设置这些参数能够显著提升程序的性能和稳定性。
- **IBM Java虚拟机**:与Sun JDK兼容,但启动参数的写法风格有所不同,主要用于WebSphere等运行在AIX上的中间件服务器。 - **开源Java虚拟机**:尽管与Sun JDK兼容,但在生产环境中使用较少。 #### 二、Java内存...