- 浏览: 435083 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (144)
- java (32)
- Flex (11)
- linux (15)
- 思维至上 (2)
- 生活 (4)
- spring2.5.5 (3)
- Design pattern (0)
- jdk1.6 (1)
- erlang (14)
- mysql (5)
- nginx (10)
- 互联网 (1)
- 用户体验 (0)
- jvm (8)
- hibernate (0)
- oracle (0)
- mvn (2)
- 23种常用设计模式详细讲解及实例 (1)
- nosql (1)
- mongodb (2)
- thrift (1)
- 负载均衡 (1)
- Objective-c (1)
- fuck (1)
- resin (3)
- log4j (2)
- android (1)
- jps (0)
- lucene (2)
- rsync (1)
- python (1)
- java性能分析 (1)
- spring (1)
- zookeeper (2)
- error (1)
- 算法 (1)
- hudson (1)
- svn (1)
- maven (1)
- svn server (2)
- swap linux (1)
- 协同过滤 (1)
- 邮件系统 (1)
最新评论
-
cheetah747:
我也遇到这个问题了,不过我是直接把第三方jar放到工程文件的l ...
JAVA NoClassDefFoundError: -
dxm1986:
hillfallshore 写道亲 你这是杜撰的小说吗?完全是 ...
面试有感 -
dxm1986:
mengda1027 写道从实习生到高级java到架构师,是在 ...
面试有感 -
dxm1986:
kljjack 写道一个编程十几年,每年看几十本技术书籍,技术 ...
面试有感 -
dxm1986:
轻指飞扬 写道呵呵,挺好玩的~ 我怎么感觉你招人不是很有诚意嘛 ...
面试有感
本文主要根据这篇PDF(GCTuningGuidelines)写成。 首先是JDK1.5引入的新功能 Ergonomic Settings(自动优化的参数) 对于有2块CPU和2GB内存及更佳配置的服务器,Sun的hotspot jdk默认设置了如下参数: 我在网上发现了这篇文章,也是根据那篇PDF写的,基本都翻译过来了,那我就不再做造轮子的过程了。有些自己的想法会用红色标出。 摘自 http://unixboy.javaeye.com/ 原文链接 JVM调优总结 -Xms -Xmx -Xmn -Xss 典型设置(例子中的堆分配的都比较大,注意自己平台的限制,下文同): -Xms3550m:设置JVM促使内存为3550m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存(就是收缩和扩张,分代回收加上Sun内存分配的算法,避免了IBM JDK最小堆和最大堆一样上的缺陷,但是这对-Xms和-Xmx的设置有了更高的要求,应该是多次试验确定一个合适的大小)。 -Xmn2g:设置年轻代大小为2G。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。从下图,应该可以看到整个堆大小=年轻代大小 + 年老代大小,Xms和Xmx不包括Perm Size。 -XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6 -XX:MaxPermSize=16m:设置持久代大小为16m。 -XX:MaxTenuringThreshold=0:设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概率。下面要介绍的CMS(并发)收集器,SurvivorRatio默认为1024 MaxTenuringThreshold默认为0,可以手动调整,降低年老代的回收压力,即照顾到吞吐率,又关注到相应时间。 典型配置: -XX:ParallelGCThreads=20:配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相等。应该等于或者小于cpu数量(核),否则没有意义,而当服务器的CPU数小于等于2时,用并发收集和串行收集效率一样。 典型配置: -XX:+UseParNewGC:设置年轻代为并行收集。可与CMS收集同时使用。JDK5.0以上,JVM会根据系统配置自行设置,所以无需再设置此值。 -XX:+UseCMSCompactAtFullCollection:打开对年老代的压缩。可能会影响性能,但是可以消除碎片
34.702: [GC {Heap before gc invocations=7: def new generation total 55296K, used 52568K [0x1ebd0000, 0x227d0000, 0x227d0000) eden space 49152K, 99% used [0x1ebd0000, 0x21bce430, 0x21bd0000) from space 6144K, 55% used [0x221d0000, 0x22527e10, 0x227d0000) to space 6144K, 0% used [0x21bd0000, 0x21bd0000, 0x221d0000) tenured generation total 69632K, used 2696K [0x227d0000, 0x26bd0000, 0x26bd0000) the space 69632K, 3% used [0x227d0000, 0x22a720f8, 0x22a72200, 0x26bd0000) compacting perm gen total 8192K, used 2898K [0x26bd0000, 0x273d0000, 0x2abd0000) the space 8192K, 35% used [0x26bd0000, 0x26ea4ba8, 0x26ea4c00, 0x273d0000) ro space 8192K, 66% used [0x2abd0000, 0x2b12bcc0, 0x2b12be00, 0x2b3d0000) rw space 12288K, 46% used [0x2b3d0000, 0x2b972060, 0x2b972200, 0x2bfd0000) 34.735: [DefNew: 52568K->3433K(55296K), 0.0072126 secs] 55264K->6615K(124928K)Heap after gc invocations=8: def new generation total 55296K, used 3433K [0x1ebd0000, 0x227d0000, 0x227d0000) eden space 49152K, 0% used [0x1ebd0000, 0x1ebd0000, 0x21bd0000) from space 6144K, 55% used [0x21bd0000, 0x21f2a5e8, 0x221d0000) to space 6144K, 0% used [0x221d0000, 0x221d0000, 0x227d0000) tenured generation total 69632K, used 3182K [0x227d0000, 0x26bd0000, 0x26bd0000) the space 69632K, 4% used [0x227d0000, 0x22aeb958, 0x22aeba00, 0x26bd0000) compacting perm gen total 8192K, used 2898K [0x26bd0000, 0x273d0000, 0x2abd0000) the space 8192K, 35% used [0x26bd0000, 0x26ea4ba8, 0x26ea4c00, 0x273d0000) ro space 8192K, 66% used [0x2abd0000, 0x2b12bcc0, 0x2b12be00, 0x2b3d0000) rw space 12288K, 46% used [0x2b3d0000, 0x2b972060, 0x2b972200, 0x2bfd0000) } , 0.0757599 secs] 四、调优总结 减少年轻代和年老代花费的时间,一般会提高应用的效率 五、PDF中提到的另外一些参数 -XX:+AggressiveOpts:作用如其名(aggressive),启用这个参数,则每当JDK版本升级时,你的JVM都会使用最新加入的优化技术(如果有的话) -XX:+UseBiasedLocking:不是很理解,请自行阅读http://java.sun.com/performance/reference/whitepapers/tuning.html#section4.2.5 五、参考资料 Diagnosing a Garbage Collection problem J2SE 5.0 Performance White Paper Tuning Garbage Collection with the 5.0 Java[tm] Virtual MachineJAVA性能优化—Sun Hotspot JDK JVM参数设置
发表评论
-
what the fucking code
2012-04-12 14:08 1212public class MemInfo<T ex ... -
Jps介绍以及解决jps无法查看某个已经启动的java进程问题
2012-03-07 16:41 0Jps介绍以及解决jps无法查看某个已经启 ... -
java.lang.UnsupportedOperationException
2012-02-17 15:01 2143在使用Arrays.asList()后调用add,r ... -
设计模式
2011-10-09 11:05 94723种常用设计模式详细 ... -
JVM调优与监控
2011-09-17 10:57 1694随时记录,方便以后 ... -
A threadpool with limited cache
2011-09-14 10:13 1300As we all know ,we use the ... -
JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jsta
2011-09-10 13:03 1634Java 内存泄露监控工具(一) -- JV ... -
两个shell脚本,希望大家能够用上
2011-09-08 14:46 1114第一个 定时抓取服务器JVM相关信息 #! /bin/s ... -
责任链
2011-09-05 18:26 967其实我一直都不太喜欢去死记硬背那些神马设计模式,但不得不说,你 ... -
jstat的使用方法
2011-08-30 23:30 7693jstat的使用方法 http: ... -
JVM参数配置大全
2011-08-07 09:42 1250JVM参数配置大全[转] 2010-01-14 ... -
JAVA NoClassDefFoundError:
2011-07-24 05:31 49634NoClassDefFoundError: 我 ... -
单实例设计模式
2011-07-15 15:30 807今天讲一下单实例模式 A: public ... -
java关键字:Volatile,Transient,strictfp
2011-06-27 10:04 874Volatile修饰的成员变量 ... -
使用JDK 1.6自带的jvisualvm监控远程服务器中Java程序资源占用情况
2011-05-06 09:36 7740使用JDK 1.6自带的jvisualvm监控远程 ... -
java虚拟机参数设置
2011-05-05 20:07 1156java虚拟机参数设置 收藏 ... -
[转]JVM内存段分配及启动参数
2011-05-05 17:39 22101. JVM内存段分配及启动参数:J2EE服务器的内 ... -
Jconsole
2011-05-04 15:06 1400Jconsole是JDK自带的一个很好的jvm查看工具 ... -
[转]java.lang.OutOfMemoryError
2011-04-29 16:36 3632http://www.blogjava.net/ld ... -
tomcat6 性能调优
2011-04-20 13:31 2798每个web客户端请求对于服务器端来说就一个单独的线程, ...
相关推荐
Hotspot是Oracle JDK和OpenJDK中的一个JVM实现,以其高效性能和优化能力而著称。本文将深入探讨OpenJDK中的JVM Hotspot实现源码,帮助读者理解其内部机制和优化策略。 首先,Hotspot JVM的核心设计理念是“热Spot”...
2. 深入理解JVM:通过阅读`sun.jvmstat`、`sun.hotspot`等包的源码,可以深入了解JVM的运行机制,如垃圾收集、性能监控等。 3. 解决问题:当遇到JVM级别的问题时,查看sun包源码往往能提供直接的解决方案。 总之,...
HotSpot是Oracle JDK中的默认虚拟机,它以高性能和优化的代码执行而闻名。 【描述】中提到,这个JDK是开源的,意味着它的源代码可供公众查看、修改和分发。对于Delphi开发者来说,这个Java包文件是必不可少的,因为...
JVM 的源码对于理解 Java 性能优化、垃圾回收机制、类加载过程以及内存管理等方面有着至关重要的作用。HotSpot 是 Oracle JDK 和 OpenJDK 使用的默认 JVM 实现,它的名字来源于其“热点代码”检测技术,能够识别并...
在JDK 1.8版本中,虽然已经包含了大部分核心类库的源代码,但某些特定的Sun Microsystems(后被Oracle收购)实现的内部类或模块,如JNI(Java Native Interface)和一些性能优化的代码,通常并不公开。这些内部实现...
### Sun Hotspot V1.6.0 JVM GC详解 #### 一、JVM结构与GC基础知识 ##### 1.1 JVM内存结构概述 Java虚拟机(JVM)内存主要分为以下几个部分: - **程序计数器(PC Register)**:记录当前线程所执行的字节码指令...
HotSpot虚拟机是Sun Microsystems(现为Oracle公司)开发的一款高性能的Java虚拟机,它的名字源于其能够"识别"并"热点"代码,通过即时编译(JIT,Just-In-Time)将经常执行的字节码转化为本地机器代码,从而提高运行...
例如,`sun.jvm.hotspot`子包提供了一些用于分析和调试HotSpot JVM的工具,这对于性能优化和故障排查非常有用。 4. **编译器和类加载器**:`sun.compile`和`sun.misc`包提供了对Java编译和类加载的支持。`sun.misc....
总之,JVM优化涉及到内存分配、垃圾收集器选择、垃圾回收策略以及各种性能优化参数的调整。这些配置需要根据实际应用的负载、内存需求以及性能指标进行精细化调整,以确保应用程序的高效稳定运行。
- **Sun Hotspot 对 JVM 堆采用分代管理**: - **新生代** (Young Generation):包含 Eden 和 Survivor 区域 (S0/S1)。 - **老年代** (Old Generation):长期存活的对象将被转移到这里。 - **分代策略**:利用...
"sun.compiler"和"sun.hotspot"子包涉及到Java的即时编译器(JIT)。这些源码揭示了JVM如何动态地将字节码转化为机器码,并进行优化,从而提高程序的运行效率。 4. **垃圾收集(Garbage Collection)**: "sun.gc...
在Java世界中,深入理解虚拟机(JVM)的工作机制对于优化代码性能至关重要。HotSpot VM是Oracle JDK中默认的JVM实现,它提供了一种称为HSDB(HotSpot Debugger Bridge)的工具,用于在运行时查看和分析JVM内部的数据...
* 应用程序修改:修改应用程序以适应 HotSpot 环境,包括更改 JVM 选项、调整性能设置等。 * 测试和验证:测试和验证应用程序在 HotSpot 环境中的正确性和性能。 四、版权和法律信息 迁移指南中还包括了版权和法律...
OpenJDK8U-jdk_x64_linux_hotspot_8u265b01.tar.gz是AdoptOpenJDK为64位Linux提供的OpenJDK 8更新版本,提供了一套完整的Java开发和运行环境,包括HotSpot虚拟机,确保开发者能够利用最新改进的安全性和性能进行Java...
JRockit 是由 BEA Systems 开发的 JVM,而 HotSpot 是由 Sun Microsystems 开发的 JVM。该指南旨在帮助开发者顺利地从 JRockit 迁移到 HotSpot。 描述:Java 平台,Standard Edition JRockit 到 HotSpot 迁移指南 ...
- **2000年**:Hotspot虚拟机作为默认的JVM被集成到了JDK 1.3中,标志着JVM性能的一个重要转折点。 - **2002年**:Classic VM退出历史舞台,此时的Java生态系统已经非常成熟,各种工具和框架逐渐完善。 - **2004年**...
HotSpot是Oracle JDK和OpenJDK的默认JVM实现,以其高性能和优秀的垃圾收集策略而闻名。 对于Spring开发者来说,选择AdoptOpenJDK的OpenJDK版本作为开发环境是明智之举,因为它既符合开源精神,又保证了与官方JDK的...