- 浏览: 588950 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 1222思考一个问题,以下代码是一个简单的饿汉式单例代码,显然在第一次 ... -
由ApacheCommon-BeanUtils1.8.3发现的Java HotSpot(TM)的Bug
2012-07-03 15:42 1561由ApacheCommon-BeanUtils1.8.3发现的 ... -
JVM垃圾回收
2012-04-19 13:02 3501一、JVM内存模型及垃圾收集算法 1.根据Java虚 ... -
Java构建HashCode相同字符串算法
2012-01-10 15:05 5518import java.math.BigDecimal; ... -
线程全部结束与集合点
2011-11-12 16:26 1225final int size = 50; fin ... -
ddddddddd
2011-11-12 16:21 1200dddddddddd -
ccccccc
2011-11-12 16:20 1819ccccccccccc -
bbbbbb
2011-11-12 16:19 1694bbbbb -
Aaaaa
2011-11-12 16:19 893aaaaaaaa -
备忘链接
2011-08-16 18:25 924翻译,随便写了写,备忘一下 URLConnection co ... -
jvisualvm监听JVM
2011-08-05 10:14 1188配置好 set JAVA_OPTS=%JAVA_OPTS ... -
JVM垃圾回收策略
2011-08-02 14:59 1032为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不 ... -
Java GC
2011-08-02 13:38 1029调整JVM GC(Garbage Collection),可 ... -
Java的弱引用(Weak Reference)
2011-05-18 16:07 1226要理解弱引用,首先要 ... -
使用classloader动态加载Class
2011-05-17 14:25 940http://www.javaworld.com/javawo ... -
查看class文件信息
2011-05-16 14:15 1677看了第6章的java class文件这一部分,我觉得对clas ... -
.class文件格式--java字节码文件的格式
2011-05-14 23:07 25251 . 目的 Java 虚拟机识别的 class 文件格式包含 ... -
Calendar
2011-03-30 14:13 1028/**获得参数月份的一号及其下一个月的一号*/ priva ... -
Bad version number in .class file
2011-03-04 15:08 1317java.lang.UnsupportedClassVersi ... -
Java反射之:判断修饰符
2010-12-24 11:36 2580import java.lang.reflect.Modifi ...
相关推荐
JVM深入理解,JVM调优技巧
JVM调优实战 介绍JVM调优的技巧相关参数的设置等等
jvm工具、参数调优&调试技巧 jvm工具、参数调优&调试技巧
JVM系列之性能调优参考手册(实践篇).pdf,资源分享达人
JVM调优总结(4)分代垃圾回收Java开发Java经验技巧共10页.pdf.zip
本篇文章是对JVM 调优的技巧进行了总结和分析。需要的朋友参考下
模块四,JVM 性能监测及调优。 模块五,设计模式调优。 模块六,数据库性能调优。 模块七,实战演练场。 性能优化手册是一套java性能学习研究小技巧,包含内容:Java性能优化、JVM性能优化、服务器性能优化、数据库...
对 Java 工程师而言,性能优化能力决定了你能否进入大厂或成为一名高级工程师。但性能优化的能力却极难提升,如果你缺乏正确的方法论和实战演练,则很容易事倍功半。 视频大小:1.2G
jvm工具、参数调优&调试技巧
喜欢的朋友可以下载下来进行使用,都是一些比较好用的东西,都是我多年开发收藏的一些东西,分享给更多喜欢搞技术的朋友们
最后,我们将看看用于提升Java应用程序性能的JVM调优技巧和架构调整。请注意,性能优化是一个很宽泛的话题,而本文只是对JVM探索的一个起点。 在开始优化应用程序的性能之前,我们需要理解诸如可扩展性、性能、可用...
2.1 JVM调优 2.1.1 垃圾收集和堆大小 2.1.2 jRockit调优 2.2 Server调优 2.2.1 尽量使用本地I/O库 2.2.2 调整默认执行线程数 2.2.3 调整连接参数 2.2.4 创建新的执行队列 2.3 JDBC调优 2.3.1 调整连接池配置 2.4 WEB...
NULL 博文链接:https://tywo45.iteye.com/blog/1231816
在本课程中个,将详细介绍JVM的基本原理、组成以及工作方式,并配合实际案例,介绍相关的调优技巧。 课程大纲: 第一课 初识JVM JVM分类 Java语言规范 JVM规范 介绍JVM的基本知识和发展历史,并介绍了Java语言...
《Java程序性能优化:让你的Java程序更快、更稳定》共6章,先后从软件设计、软件编码、JVM调优以及程序故障排斥等方面介绍针对Java程序的优化方法。第1章介绍性能的基本概念、定律、系统调优的过程和注意事项。第2章...
《Java程序性能优化:让你的Java程序更快、更稳定》共6章,先后从软件设计、软件编码、JVM调优以及程序故障排斥等方面介绍针对Java程序的优化方法。第1章介绍性能的基本概念、定律、系统调优的过程和注意事项。第2章...
前言文章对 JVM 内存区域分布、JVM 内存溢出分析、JVM 垃圾回收算法/垃圾收集器、JVM 性能调优工具及技巧、类加载等部分做了详细描述。用XMind画了
《Java程序性能优化:让你的Java程序更快、更稳定》共6章,先后从软件设计、软件编码、JVM调优以及程序故障排斥等方面介绍针对Java程序的优化方法。第1章介绍性能的基本概念、定律、系统调优的过程和注意事项。第2章...