摘要:在hostswap dcevm中我们对Dynamic Code Evolution VM有了一个简单的了解,这篇文章将介绍Dynamic Code Evolution VM的实现原理。 有两个概念需要区别下: Dynamic Code Evolution (下文简称DCE):泛指java在运行时修改程序的技术.例如aop等. Dynamic Code Evolution VM(下文简称DCE VM... 阅读全文
posted @ 2011-06-14 15:50 redcreen 阅读 (4379) 评论 (0) 编辑
摘要:GluonJ是一个简单的面向切面编程(AOP)的java工具.GluonJ针对面向对象的语言(OOP)结构提供了一个极其简单的扩展方式实现了AOP的特性,非常独特:不同于其他流行的AOP框架,没有采用pointcut-advice,而是采用了revisers 和 within methods. Gluonj是较高级别的API,底层使用javassist进行java类文件处理. 有意思的项目名称:Gluon+J,J指的是java,Gluon翻译后是胶子(物理名词),gluonJ的特性与胶子还真是有几分相似之处.项目的作者对物理也有研究? Gluonj的HelloWold 原始类:Person . 阅读全文
posted @ 2011-06-03 15:05 redcreen 阅读 (2002) 评论 (0) 编辑
摘要:什么是dcevm dcevm(DynamicCode Evolution Virtual Machine)是java hostspot的补丁(严格上来说是修改),允许(并非无限制)在运行环境下修改加载的类文件.当前虚拟机只允许修改方法体(method bodies),decvm,可以增加 删除类属性、方法,甚至改变一个类的父类。原理参见Dynamic Code Evolution for Java... 阅读全文
posted @ 2011-06-03 11:21 redcreen 阅读 (4622) 评论 (0) 编辑
摘要:以下的相关介绍都是在未使用dcevm的情况 classLoader的卸载机制 jvm中没有提供class及classloader的unload方法.那热部署及osgi中是通过什么机制来实现的呢?实现思路主要是通过更换classLoader进行重新加载.之前的classloader及加载的class类在没有实例引用的情况下,在perm区gc的情况下会被回收掉. perm区gc时回收掉没有引用的cl... 阅读全文
posted @ 2011-06-02 17:39 redcreen 阅读 (8415) 评论 (1) 编辑
摘要:1. @ProbeClassName String clazz 此处String不能写为java.lang.String 2. location=@Location(Kind.RETURN) public static void traceExecute(AnyType[] args,@ProbeClassName String clazz,@ProbeMethodName String meth... 阅读全文
posted @ 2011-05-29 16:28 redcreen 阅读 (2427) 评论 (0) 编辑
摘要:前几篇篇文章介绍了介绍了JVM的参数设置并给出了一些生产环境的JVM参数配置参考方案。正如之前文章中提到的JVM参数的设置需要根据应用的特性来进行设置,每个参数的设置都需要对JVM进行长时间的监测,并不断进行调整才能找到最佳设置方案。本文将介绍如果通过工具及Java api来监测JVM的运行状态,并详细介绍各工具的使用方法。 需要监测的数据:(内存使用情况 谁使用了内存 GC的状况) 内存使用情... 阅读全文
posted @ 2011-05-09 11:28 redcreen 阅读 (34736) 评论 (2) 编辑
摘要:java application项目(非web项目) 改进前: -Xms128m-Xmx128m-XX:NewSize=64m-XX:PermSize=64m-XX:+UseConcMarkSweepGC-XX:CMSInitiatingOccupancyFraction=78-XX:ThreadStackSize=128-Xloggc:logs/gc.log-Dsun.rmi.dgc.serve... 阅读全文
posted @ 2011-05-05 22:27 redcreen 阅读 (34751) 评论 (2) 编辑
摘要:不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各个机器上的配置不... 阅读全文
posted @ 2011-05-04 22:47 redcreen 阅读 (396566) 评论 (14) 编辑
摘要:JVM里的GC(Garbage Collection)的算法有很多种,如标记清除收集器,压缩收集器,分代收集器等等,详见HotSpot VM GC 的种类 现在比较常用的是分代收集(generational collection,也是SUN VM使用的,J2SE1.2之后引入),即将内存分为几个区域,将不同生命周期的对象放在不同区域里:young generation,tenured gener... 阅读全文
posted @ 2011-05-04 22:46 redcreen 阅读 (34247) 评论 (1) 编辑
摘要:collector种类 GC在 HotSpot VM 5.0里有四种: incremental (sometimes called train) low pause collector已被废弃,不在介绍. 类别 serial collector parallel collector( throughput collector ) concurrent collector(concurrent lo... 阅读全文
posted @ 2011-05-04 22:15 redcreen 阅读 (23323) 评论 (2) 编辑