
JVM
JJiaoAo
这个作者很懒,什么都没留下…
展开
-
JVM调优总结(一)一些概念
[size=medium][b]数据类型[/b]Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。[list][*]基本类型包括:byte,short,int,long,char,float,double...原创 2012-10-19 09:52:12 · 102 阅读 · 0 评论 -
Java 垃圾回收机制详解和调优
[size=medium][b]1.JVM的gc概述[/b][/size]gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存。java语言并不要求jvm有gc,也没有规定gc如何工作。不过常用的jvm都有gc,而且大多数gc都使用类似的算法管理内存和执行收集操作。 在充分理解了垃圾收集算法和执行过程后,才能有效的优化它的性能。有些垃圾收集专用于特殊的应用程序。比如...原创 2012-09-19 21:43:11 · 98 阅读 · 0 评论 -
Java常用的性能测试工具记录
[size=medium]1.VisualVMVisualVM是一个资源分析工具,一直从JDK 6更新到7,它默认内存和CPU的监视,它可以告诉你哪个类和方法消耗资源,但它不会显示代码流程。 2.JProfilerJProfiler很容易安装,并且通过向导,你可以选择应用服务器用来运行应用程序。我不得不选择使用JPofiler应用服务器的主目录,以及向导生成的一个单独的...原创 2012-11-07 15:21:50 · 162 阅读 · 0 评论 -
JVM调优总结(十一)反思
[size=medium]垃圾回收的悖论所谓“成也萧何败萧何”。Java的垃圾回收确实带来了很多好处,为开发带来了便利。但是在一些高性能、高并发的情况下,垃圾回收 确成为了制约Java应用的瓶颈。目前JDK的垃圾回收算法,始终无法解决垃圾回收时的暂停问题,因为这个暂停严重影响了程序的相应时间 ,造成拥塞或堆积。这也是后续JDK增加G1算法的一个重要原因。当然,上面是从技术角度出发解决垃圾回...原创 2012-10-21 14:20:33 · 126 阅读 · 0 评论 -
JVM调优总结(十)调优方法
[size=medium]JVM调优工具Jconsole,jProfile,VisualVMJconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。详细说明参考这里JProfiler:商业软件,需要付费。功能强大。详细说明参考这里VisualVM:JDK自带,功能强大,与JProfiler类似。推荐。如何调优观察内存释...原创 2012-10-21 14:17:53 · 285 阅读 · 0 评论 -
JVM调优总结(九)新一代的垃圾回收算法
[size=medium][b]垃圾回收的瓶颈[/b]传统分代垃圾回收方式,已经在一定程度上把垃圾回收给应用带来的负担降到了最小,把应用的吞吐量推到了一个极限。但是他无法解 决的一个问题,就是Full GC所带来的应用暂停。在一些对实时性要求很高的应用场景下,GC暂停所带来的请求堆积和请求失败是无法接受 的。这类应用可能要求请求的返回时间在几百甚至几十毫秒以内,如果分代垃圾回收方式要达到这个指...原创 2012-10-21 14:09:53 · 110 阅读 · 0 评论 -
JVM调优总结(八)典型配置举例2
[size=medium][b]常见配置汇总堆设置[/b]-Xms:初始堆大小-Xmx:最大堆大小-XX:NewSize=n:设置年轻代大小-XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survi...原创 2012-10-21 14:07:36 · 114 阅读 · 0 评论 -
JVM调优总结(七)-典型配置举例1
[size=medium]以下配置主要针对分代垃圾回收算法而言。[b]堆大小设置年轻代的设置很关键[/b]JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存 限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。在Windows Server 2003 系统,3.5G物理内存,JDK5...原创 2012-10-20 09:16:55 · 90 阅读 · 0 评论 -
JVM调优总结(六)-分代垃圾回收详述2
[b]分代垃圾回收流程示意[/b][img]http://dl.iteye.com/upload/attachment/0075/3072/6b525314-044c-3788-9853-a20695fe01fb.gif[/img][img]http://dl.iteye.com/upload/attachment/0075/3076/d2af78b4-ac7f-3794-af51...原创 2012-10-20 09:15:53 · 142 阅读 · 0 评论 -
JVM调优总结(五)分代垃圾回收详述
[size=medium] [b]为什么要分代[/b]分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式 ,以便提高回收效率。 在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象、线程、Socket连接, 这类对象跟业务直接挂钩,因此生命周期比较长。但...原创 2012-10-20 09:15:37 · 134 阅读 · 0 评论 -
JVM调优总结(四)垃圾回收面临的问题
[size=medium][b]如何区分垃圾[/b]上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断。垃圾回收程序收集计数为0的对象即可。但是这种方 法无法解决循环引用。所以,后来实现的垃圾判断算法中,都是从程序运行的根节点出发,遍历整个对象引用,查找存活的对象。那么在这 种方式的实现中, 垃圾回收从哪儿开始的呢?即,从哪儿开始查找哪些对象是正在被当前系统使用的。上面分...原创 2012-10-20 09:15:23 · 98 阅读 · 0 评论 -
JVM调优总结(三)基本垃圾回收算法
[size=medium]可以从不同的的角度去划分垃圾回收算法:按照基本回收策略分[b]引用计数(Reference Counting):[/b]比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。[b]标记-清除(Mark-Sweep):[/b][/size][...原创 2012-10-20 09:15:03 · 120 阅读 · 0 评论 -
JVM调优总结(二)-一些概念
[size=medium][b]Java对象的大小[/b]基本数据的类型的大小是固定的,这里就不多说了。对于非基本类型的Java对象,其大小就值得商榷。在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没有任何属性的对象的大小。看下面语句:[/size][code="java"]Object ob = new Object();[/code][size...原创 2012-10-19 09:52:53 · 88 阅读 · 0 评论 -
Java 内存的原型及工作原理
[size=medium][b]一、java虚拟机内存原型[/b]为什么JVM内存会如此设计呢:目前大致的分为:堆、栈、方法区、程序计数器、直接内存为什么会分这么多呢?要想程序运行起来,需要不同的数据,不同的模型。如:线程运行时有线程的一些专有属性。第二就是 为了 内存的回收,可以分别调优。给用户更大选择。除了 程序计算器没有内存溢出外,每个区都会有内存溢出。(程序计算...原创 2012-09-20 23:26:22 · 99 阅读 · 0 评论