- 浏览: 596276 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (213)
- jdk (40)
- J2EE (8)
- JavaScript (16)
- spring (1)
- 正则 (10)
- ORACLE (18)
- CSS (1)
- 生活学习 (14)
- XML (3)
- Linux (11)
- 项目架设 (12)
- Junit (1)
- Derby (3)
- JMX (5)
- 版本控制 (4)
- PowerDesigner (1)
- 加密解密 (1)
- android (4)
- Eclipse (4)
- Hibernate (6)
- Tomcat (4)
- JasperReport&iReport (1)
- SqlServer (6)
- C++ (3)
- 系统架构涉及名词解释 (5)
- Hadoop (8)
- windows (2)
- SOA (1)
- 有趣的Google (1)
- 编程语言 (0)
- 数据结构与算法 (1)
- nodejs (1)
- 一些测试整理备份在这里吧 (0)
- 性能 (3)
- Drill (5)
- 学习 (1)
最新评论
1.升级 JVM 版本。如果能使用64-bit,使用64-bit JVM。
基本上没什么好解释的,很简单将JVM升级到最新的版本。如果你还是使用JDK1.4甚至是更早的JVM,那你首先要做的就是升级。因为JVM从1.4- >1.5->1.6可不是仅仅的版本号升级,或者仅仅往里面加了一堆新的语言特性,这么简单。而是真正在JVM做了重大的改进,每次版本升级,都有巨大的性能升级。尤其是SUN认识到java是知己的全部的时候(夸张点,但连股票号都改成JAVA了,呵呵)。如果你经常逛SUN 的JVM论坛,你就会发现实际上JVM上的毛病是这么多。如果你因为各种原因,而不能升级到1.6,那你可以升级到该版本的最新版。
2.选择一个正确的GC(Gargage Collection)。
由于当JAVA程序GC的时候,会停下当前程序。尤其Full GC的时候,会停留很长时间。一般对于GUI程序来说,是很难接受的(想想Eclipse暂停的时候)。 JAVA5 以后,开始自带了好几种GC,你可以选择一个适合你的种类。有以下四种Serial Collector,Parallel collector,Concurrent Collector,Train Collector(废弃)。后面几种时候使用并行收集,所以理论上有效率更高(要求你有超过2CUP,但是现在多核开始普及了,呵呵)。提示:更改GC 种类以后要适当挺高JVM的内存量。
3.正确设置内存大小。对JVM堆内的各个区域(young,old,perm)正确设置大小。
这个是最困难的调整,因为这个调整会直接影响GC的效率。而且由于各个程序的类型不用,所以没有一个通用的数据。除了几个常用规则以外,需要使用工具(jstat,jvmstat,jconsole等等)仔细调整。下面会提到几个常用的准则。通常使用一下几个参数调整-Xms -Xmx-XX:MaxPermSize。
3.1 调高-XX:NewRatio(NewSize/MaxNewSize)的值,会减少young gc的次数,但会增加old gc的时间。
3.2 增加普通GC的方法(减小Full GC)。扩大young区域的大小(最大40%),并过大Survivor的区域。使得更多的object留在young gen。
4.减小类的使用量,注意类的load和unload,减少JSP页数。
类实际上也是对象,会直接分配perm区域里,即使Full GC也会很少收集。JSP也会分配到perm区域里,效果同理。如果perm过大,超过XX:MaxPermSize值,会发生 OutOfMemoryError: PermGen space异常。解决方法是提高-XX:MaxPermSize值。
5.避免使用-Xnoclassgc
6.如果是RMI程序,要注意调整RMI DGC的时间。
以下是几个写程序时,应该注意的地方。也可减小GC,提高JVM性能。
1.不要使用System.gc()方法。
因为它会产生Full GC。
2.尽可能少分配大的临时对象(生命周期短的)
可能会直接分配到old区域里,old区域只有Full GC的时候会收集。
3.避免使用finalize()方法。
finalize()会增加GC的负担,使用java.lang.ref代替。
我是这么配置的
catalina
SET JAVA_OPTS=%JAVA_OPTS% -XX:+UseConcMarkSweepGC -verbose:gc -Xms4096m -Xmx8192m -XX:PermSize=256M -XX:MaxPermSize=512m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port="9004" -Dcom.sun.management.jmxremote.authenticate="false" -Dcom.sun.management.jmxremote.ssl="false" -XX:-HeapDumpOnOutOfMemoryError -XX:-DisableExplicitGC
基本上没什么好解释的,很简单将JVM升级到最新的版本。如果你还是使用JDK1.4甚至是更早的JVM,那你首先要做的就是升级。因为JVM从1.4- >1.5->1.6可不是仅仅的版本号升级,或者仅仅往里面加了一堆新的语言特性,这么简单。而是真正在JVM做了重大的改进,每次版本升级,都有巨大的性能升级。尤其是SUN认识到java是知己的全部的时候(夸张点,但连股票号都改成JAVA了,呵呵)。如果你经常逛SUN 的JVM论坛,你就会发现实际上JVM上的毛病是这么多。如果你因为各种原因,而不能升级到1.6,那你可以升级到该版本的最新版。
2.选择一个正确的GC(Gargage Collection)。
由于当JAVA程序GC的时候,会停下当前程序。尤其Full GC的时候,会停留很长时间。一般对于GUI程序来说,是很难接受的(想想Eclipse暂停的时候)。 JAVA5 以后,开始自带了好几种GC,你可以选择一个适合你的种类。有以下四种Serial Collector,Parallel collector,Concurrent Collector,Train Collector(废弃)。后面几种时候使用并行收集,所以理论上有效率更高(要求你有超过2CUP,但是现在多核开始普及了,呵呵)。提示:更改GC 种类以后要适当挺高JVM的内存量。
3.正确设置内存大小。对JVM堆内的各个区域(young,old,perm)正确设置大小。
这个是最困难的调整,因为这个调整会直接影响GC的效率。而且由于各个程序的类型不用,所以没有一个通用的数据。除了几个常用规则以外,需要使用工具(jstat,jvmstat,jconsole等等)仔细调整。下面会提到几个常用的准则。通常使用一下几个参数调整-Xms -Xmx-XX:MaxPermSize。
3.1 调高-XX:NewRatio(NewSize/MaxNewSize)的值,会减少young gc的次数,但会增加old gc的时间。
3.2 增加普通GC的方法(减小Full GC)。扩大young区域的大小(最大40%),并过大Survivor的区域。使得更多的object留在young gen。
4.减小类的使用量,注意类的load和unload,减少JSP页数。
类实际上也是对象,会直接分配perm区域里,即使Full GC也会很少收集。JSP也会分配到perm区域里,效果同理。如果perm过大,超过XX:MaxPermSize值,会发生 OutOfMemoryError: PermGen space异常。解决方法是提高-XX:MaxPermSize值。
5.避免使用-Xnoclassgc
6.如果是RMI程序,要注意调整RMI DGC的时间。
以下是几个写程序时,应该注意的地方。也可减小GC,提高JVM性能。
1.不要使用System.gc()方法。
因为它会产生Full GC。
2.尽可能少分配大的临时对象(生命周期短的)
可能会直接分配到old区域里,old区域只有Full GC的时候会收集。
3.避免使用finalize()方法。
finalize()会增加GC的负担,使用java.lang.ref代替。
我是这么配置的
catalina
SET JAVA_OPTS=%JAVA_OPTS% -XX:+UseConcMarkSweepGC -verbose:gc -Xms4096m -Xmx8192m -XX:PermSize=256M -XX:MaxPermSize=512m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port="9004" -Dcom.sun.management.jmxremote.authenticate="false" -Dcom.sun.management.jmxremote.ssl="false" -XX:-HeapDumpOnOutOfMemoryError -XX:-DisableExplicitGC
发表评论
-
关于饿汉式单例首次初始化失败后,可以再次尝试?
2012-07-11 15:14 1266思考一个问题,以下代码是一个简单的饿汉式单例代码,显然在第一次 ... -
由ApacheCommon-BeanUtils1.8.3发现的Java HotSpot(TM)的Bug
2012-07-03 15:42 1608由ApacheCommon-BeanUtils1.8.3发现的 ... -
JVM垃圾回收
2012-04-19 13:02 3527一、JVM内存模型及垃圾收集算法 1.根据Java虚 ... -
Java构建HashCode相同字符串算法
2012-01-10 15:05 5565import java.math.BigDecimal; ... -
线程全部结束与集合点
2011-11-12 16:26 1256final int size = 50; fin ... -
ddddddddd
2011-11-12 16:21 1258dddddddddd -
ccccccc
2011-11-12 16:20 2001ccccccccccc -
bbbbbb
2011-11-12 16:19 1799bbbbb -
Aaaaa
2011-11-12 16:19 939aaaaaaaa -
备忘链接
2011-08-16 18:25 958翻译,随便写了写,备忘一下 URLConnection co ... -
jvisualvm监听JVM
2011-08-05 10:14 1209配置好 set JAVA_OPTS=%JAVA_OPTS ... -
JVM垃圾回收策略
2011-08-02 14:59 1066为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不 ... -
Java GC
2011-08-02 13:38 1058调整JVM GC(Garbage Collection),可 ... -
Java的弱引用(Weak Reference)
2011-05-18 16:07 1252要理解弱引用,首先要 ... -
使用classloader动态加载Class
2011-05-17 14:25 970http://www.javaworld.com/javawo ... -
查看class文件信息
2011-05-16 14:15 1708看了第6章的java class文件这一部分,我觉得对clas ... -
.class文件格式--java字节码文件的格式
2011-05-14 23:07 25471 . 目的 Java 虚拟机识别的 class 文件格式包含 ... -
Calendar
2011-03-30 14:13 1060/**获得参数月份的一号及其下一个月的一号*/ priva ... -
Bad version number in .class file
2011-03-04 15:08 1343java.lang.UnsupportedClassVersi ... -
Java反射之:判断修饰符
2010-12-24 11:36 2601import java.lang.reflect.Modifi ...
相关推荐
JVM深入理解,JVM调优技巧
通过合理配置JVM参数和采用一些调优技巧,开发者可以显著提高应用程序的性能。本文将探讨一些常用的JVM性能调优技巧,并提供代码示例来展示这些技巧的应用。 JVM性能调优是一个多方面的任务,涉及JVM配置、垃圾回收...
了解并熟练掌握这些GC算法和JVM调优技巧,对于解决性能问题、优化Java应用的运行效率至关重要,同时也是面试中经常被问到的话题。通过实践和理解,开发者可以更好地理解和控制JVM的行为,从而编写出更高效、更稳定的...
### 马士兵JVM调优笔记知识点梳理 #### 一、Java内存结构 Java程序运行时,其内存被划分为几个不同的区域,包括堆内存(Heap)、方法区(Method Area)、栈(Stack)、程序计数器(Program Counter Register)以及...
Monkey老师的JVM调优课程,无疑为我们提供了一个宝贵的平台,来深入探究JVM的工作原理及其优化技巧。下面,我们就一起来深入学习Monkey老师关于JVM调优的核心知识点。 首先,我们要明白JVM的重要性。它是Java程序...
《JVM调优实战解析》 在Java开发领域,JVM(Java Virtual Machine)是运行所有Java应用程序的基础,它的性能直接影响着程序的运行效率。因此,掌握JVM调优技术对于提升系统的稳定性和性能至关重要。本文将围绕"JVM...
《JVM调优攻略》是一份详尽的文档,旨在帮助开发者理解并掌握Java虚拟机(JVM)的优化技巧。本指南不仅适用于初学者,对于有一定基础的开发人员来说也同样具有很高的参考价值。文档中提到的核心概念包括JVM的工作原理...
JVM调优实战 介绍JVM调优的技巧相关参数的设置等等
在描述中提到了文档内容的实战化和量化,暗示了手册中不仅会介绍JVM理论知识,更注重实际应用中的调优技巧和故障排查方法。同时,文档还指出了许多JVM相关书籍倾向于理论阐述,而本手册则更强调理论与实践的结合。 ...
它涉及到内存管理、线程调度、垃圾回收等多个方面,理解并掌握JVM调优技巧,能有效避免性能瓶颈,提高应用的稳定性和响应速度。本文将结合源码分析和工具使用,深入探讨JVM调优的方方面面。 首先,我们需要了解JVM...
在IT行业中,Spring框架...总的来说,理解并熟练运用Spring微服务框架、JVM调优技巧、数据监控工具以及并发控制策略,是成为一名优秀Java开发者的基础。在实践中不断探索和学习,才能更好地应对复杂的分布式系统挑战。
3. 不稳定参数(不稳定参数):以“-XX”开头,这些是非标准化参数,主要用于JVM调优和Debug。它们可以开启或关闭某些特性,或者对某些特性设置具体的数值。例如,“-XX:+UseConcMarkSweepGC”用于启用CMS垃圾回收器...
通过对"jvm_demo-master"项目的实践和学习,我们可以掌握JVM调优的基本技巧,理解如何根据应用特点调整JVM配置,以实现性能的最大化。同时,这也会帮助我们在实际工作中更好地应对各种性能挑战,提升Java应用程序的...
通过以上实战总结,我们可以更好地理解和掌握JVM调优的技巧,为Java应用程序的高效运行提供保障。在实践中,每个应用都有其特定需求,因此调优并非一成不变,而是需要根据实际情况灵活调整。不断学习和实践,才能...
在Java开发领域,JVM(Java Virtual Machine)是运行所有Java应用程序的核心,它负责解析字节码并执行程序。..."JVM调优测试-jvmDemo"这个项目应该就是提供了一个实践平台,帮助开发者深入了解和掌握这些技巧。
《Java问题定位技术(书签版)—JVM调优》这本书可能涵盖了以上这些内容,通过深入学习,开发者可以掌握更高级的故障排查技巧,比如使用`jmap`、`jhat`等工具进行堆内存分析,或者利用`jfr`进行飞行记录,获取详细的...
本文将总结JVM性能调优的经验和技巧,并提供一些实用的配置参数和建议。 一、堆大小设置 堆大小是JVM性能调优中的一个关键参数。堆大小的设置直接影响到系统的性能和稳定性。堆大小有三方面限制:相关操作系统的...
通过这些实际操作,可以进一步理解和掌握JVM调优的技巧和策略。文档的附录部分可能会给出一些典型配置的示例,供读者参考和应用。 总体而言,JVM调优是一个系统化的过程,它需要对JVM的工作机制有深入的理解,并且...
本文将深入探讨几个关键的JVM调优技巧。 首先,升级JVM版本至关重要。随着Java版本的迭代,JVM在性能和稳定性方面都有显著提升。从JDK1.4到1.6,乃至更高的版本,每次更新不仅引入了新特性,还对JVM内部进行了大量...