当前位置: 首页 > news >正文

网站规划与建设ppt惠州网站建设效果

网站规划与建设ppt,惠州网站建设效果,高端品牌车有哪些,网站开发技术html转载自 Java的GC机制及算法 GC的阶段 对每个对象而言#xff0c;垃圾回收分为两个阶段#xff1a;finalization和reclamation。 finalization: 指运行这个对象的finalize的方法。reclamation: 回收被这个对象使用的内存。 GC的过程的基本步骤首先确认对象是不可达的#…转载自   Java的GC机制及算法 GC的阶段 对每个对象而言垃圾回收分为两个阶段finalization和reclamation。  finalization: 指运行这个对象的finalize的方法。reclamation: 回收被这个对象使用的内存。 GC的过程的基本步骤首先确认对象是不可达的即将被回收。其次如果对象有finalize方法那么对象被添加进finalization queue中然后在某个时间点finalize方法被调用以释放finalize中的资源。最后回收对象占用的内存。 关于finalize方法的问题finalize方法使得GC过程做了更多的事情增加的GC的负担。如果某个对象的finalize方法运行时间过长它会使得其他对象的finalize方法被延迟执行。finalize方法中如果创建了strong reference引用了其他对象这会阻止此对象被GC。finalize方法有可能以不可确定的顺序执行也就是说要在安全性要求严格的场景中尽量避免使用finalize方法。不确保finalize方法会被及时调用也许程序都退出了但是finalize方法还没被调用。 对象引用的类型Reference(or named Strong Reference) 强引用普通类型的引用。SoftReference 软引用被这种引用指向的对象如果此对象没要再被其他Strong Reference引用的话可能在任何时候被GC。虽然是可能在任何时候被GC但是通常是在可用内存数比较低的时候并且在程序抛出OutOfMemoryError之前才发生对此对象的GC。SoftReference通常被用作实现Cache的对象引用如果这个对象被GC了那么他可以在任何时候再重新被创建。另外根据JDK文档中介绍实际JVM的实现是鼓励不回收最近创建和最近使用的对象。SoftReference 类的一个典型用途就是用于内存敏感的高速缓存。WeakReference弱引用如果一个被WeakReference引用的对象当没要任何SoftReference和StrongReference引用时立即会被GC。和SoftReference的区别是WeakReference对象是被eagerly collected即一旦没要任何SoftReference和StrongReference引用立即被清楚而只被SoftReference引用的对象不回立即被清楚只有当内存不够即将发生OutOfMemoryError时才被清除而且是先清除不常用的。SoftReference适合实现Cache用。WeakReference 类的一个典型用途就是规范化映射 canonicalized mapping PhantomReference虚引用当没有StrongReferenceSoftReference和WeakReference引用时随时可被GC。通常和ReferenceQueue联合使用管理和清除与被引用对象没有finalize方法相关的本地资源。 衡量GC的指标GC MetricsThroughput吞吐量所有没有花在执行GC上的时间占总运行时间的比重。Pauses暂停当GC在运行时程序的暂停次数。或者是在感兴趣的暂停次数中暂停的平均时长和最大时长。Footprint足迹当前使用的堆内存大小。Promptness及时性不再使用的对象多久能被清除掉并释放其内存。 通用GC算法Java所使用的所有的GC算法都是通用GC算法概念的变种。 通用GC算法的假设 最近创建的对象很可能很快就不可达了unreachable即可被回收了比如方法内部声明的本地变量当程序运行出了本地变量的作用范围后本地变量引用的对象就很快不可达了。一个对象保持可达reachable的越久就越不可能被回收。 在Java GC中对象被划分为generations代或spaces空间。Java把对象分为young年轻代tenured年老代和perm永久代。在GC过程中对象从一个space空间移动到另一个space。 Object Spaces对象空间Young年轻代中保存着刚创建的对象这个代中的对象能够“minor” or “major” 收集中被回收。Tenured年老代中保存着从年轻代中幸存下来的对象只能够在“major”中被回收。Perm永久代中保存着JVM所需的对象比如Class对象和Method对象以及他们的字节码和内部字符串等。对Perm中的对象GC意味着所有的Class都被卸载了。 每块空间的大小由当前的对内存大小决定并且能够在运行时改变。每个空间之间的关系如下图所示 Young Spaces年轻空间Eden space存储自从上次GC完毕之后新创建的对象除了属于Perm的对象。当minor collection发生时Eden space中的对象或者GC清理掉或者被移到survivor space。Survivor spaces这个空间中存储的是自从上次GC幸存下来的young object。在minor GC中这些对象或者被GC清理掉或者被移到另外一个survivor空间中。 Minor collections和Major collectionsMinor collection当young space被占满时执行。它比major collections快因为minor collection仅仅检查major collection相应的一个子集对象。minor collection比major collection发生的频率高。Major collection当tenured space被占满时执行。他会清理tenured和young。 GC运行的三种方式在java5和java6中有4中垃圾回收的算法有一种算法将不再支持剩余的三种垃圾回收算法是 serial , throughputand  concurrent low pause 。 Stop the world停止所有程序的方式在这种方式运行的GC在GC完成前JVM中的所有程序都不允许运行。Serial collector此时做minor和major收集。Throughput collector此时做major collector。Incremental增量运行方式目前没要Java GC算法支持这种运行方式。GC以这种方式运行时GC允许程序做一小段时间的工作然后做垃圾回收工作。Concurrent并行运行Throughput collector此时做minor collectConcurrent low pause collector此时做minor和major收集。在这种运行方式下GC和程序并行的运行因此程序仅仅被短暂的暂停。 GC算法Serial算法: 使用-XX:UseSerialGC开启此算法的GC。GC使用和应用程序相同的线程去做minor collection和major collection。Throughput使用-XX:UseParallelGC开启此算法GC。GC使用多线程去做minor collection以减少程序停止的时间。但是对于major collection还是使用同程序相同的线程去做。当具有多核cpu时并且程序有大量的短生命周期的对象时并且对程序停顿时间不限制时较好。Concurrent Low Pause: 使用-XX:UseConcMarkSweepGC开启此算法GC。使用多线程去做minor和major collection。当具有多核cpu并且程序有大量的长生命周期的对象并且对程序停顿时间有限制时效果较好。 什么时候发生GCGC发生的时刻受堆内存大小的影响。如果堆内存小GC会执行的很快但是又会很快的被填满因此GC比频繁如果堆内存很大GC会执行的较慢而且不会很快被填满因此执行的比较频率比较低。 基本的GC调试throughput goal -XX:GCTimeRation 表示花费总时间百分之多少的CPU时间去运行程序。 maximum pause time goal -XX:MaxGCPauseMillisn每次GC时程序暂停最多多少毫秒。 footprint goal如果其他目标都达到了那么首先减少heap size直到前两个goal不再满足然后再慢慢增加。直到满足前面两个goal。 -Xmsn (starting) and -Xmxn (maximum) heap size这两个参数应该都很熟悉就是JVM使用的最小堆内存数和最大堆内存数。 -XX:MinHeapFreeRation, -XX:MaxHeapFreeRation最小和最大的空闲堆内存和被使用堆内存的比例。当空闲堆内存比例小于MinHeapFreeRatio时内存空间开始扩展。当空闲堆内存比例大于MaxHeapFreeRatio时内存空间开始减小。 -XX:NewSizen, -XX:MaxNewSizen默认的young space的大小包括eden survivor 1 survivor 2。 -XX:NewRationyoung和tenured的比例。 -XX:SurvivorRation每个survivor space 和 eden之间的比例。 -XX:MaxPermSizenperm的最大size。 -XX:TargetSurvivorRation每次GC之后幸存下来的空间的目标比例。 -XX:DisableExplicitGC当此参数打开时在程序中调用System.gc()将会不起作用。默认是off。 -XX:ScavengeBeforeFullGC当打开此参数时在每次major collection时先执行一次minor collection。默认打开。 -XX:UseGCOverheadLimit当打开此参数时如果总运行时间的98的时间都在做GC则抛出OutOfMemmoryError。默认打开。 参考资料 http://java.ociweb.com/mark/other-presentations/JavaGC.pdf
http://www.pierceye.com/news/952791/

相关文章:

  • 网站后台更新怎么做详情页怎么设计
  • 网站怎么做导航wordpress付费破解
  • 宁津网站建设国内免费设计素材网站
  • 泰安有口碑的企业建站公司二手汽车手机网站模板
  • 网站百度快照怎么做网站调用谷歌地图
  • 扫描二维码进入公司网站怎样做代做关键词收录排名
  • flash美食网站论文架设一个网站需要多少钱
  • 做教育视频网站用什么平台好wordpress文章 代码块
  • 网站 部署 域名深圳网站建设yuntianxia
  • 做调查的网站推荐移动端网站开发教程
  • 上海品牌网站建设公司排名女生学网络营销这个专业好吗
  • 优质的邵阳网站建设企业邮箱免费登录入口
  • 网站做seo多少钱wordpress点击分类目录空白
  • 黄埔网站建设 信科网络中国企业商铺网
  • 济南快速网站排名网站开发模板系统
  • 厦门市app开发网站建设公司亚马逊雨林在地图上的位置
  • qq空间个人网站网页设计作业个人简历代码怎么写
  • 宁波网站建设团队微信网页制作的软件
  • 社区网站推广方案百度直播推广
  • 上海网站seo诊断吉林网站优化
  • 玉田网站建设做重视频网站
  • 发放淘宝优惠券的网站怎么做网站建设理论依据
  • 信用渭南网站建设做网站实例
  • 南通做百度网站的公司哪家好公司网站建站流程
  • 北京微信网站建设费用知识问答网站开发
  • 网站建设的博客做外国网用哪些网站
  • 网站两侧广告口碑营销的案例及分析
  • 有什么手机网站wordpress 编辑器增加翻译按钮
  • 深圳网站建设企怎样做好公司网站
  • 深圳注册投资公司的条件网络优化推广公司