zoukankan      html  css  js  c++  java
  • Java分代的思考

    我们都知道,java的gc是基于java的分代前提,不管是CMS还是G1,都是基于分代思想:老年代和新生代

    思考一:为什么可以分代?

    1、java中对象的生命周期是不一样的,在gc中对应年龄的概念。

    短命的对象:如方法临时变量等。

    长命的对象:如缓存对象、连接池等。

    2、长命对象和短命对象之间的引用关系比较少(很重要)。

    思考二:分代的优点是什么?

    从垃圾回收的角度看,可以针对不同的分代采用不同的回收算法,提升垃圾回收的效率,降低系统stw的时间。

    思考三:分代没有缺点吗?

    假设我们有一个场景的java系统,是不符合思考一的java分代的前提的,那分代的垃圾回收算法反而会影响系统的性能。(期待能遇到一个这种系统。。。。)

    思考四:分代只是为了垃圾回收?

    就像第一点提到的,分代服务java对象,而java对象存在分配和回收两个过程,所以我们需要把对象分配和垃圾回收结合起来考虑分代,能同时提升对象分配和垃圾回收的效率才是分代想达到的目标

  • 相关阅读:
    增强iOS应用程序性能的提示和技巧(25个)
    [iOS]用instancetype代替id作返回类型有什么好处?
    把cygwin加入右键菜单
    NSRange
    Centos7下安装MySQL
    (转)php 操作redis全部方法。
    unbuntu 安装php5.6
    unbuntu 安装nginx
    unbuntu 安装MySQL
    Ubuntu16.04下实现MySQL主从复制
  • 原文地址:https://www.cnblogs.com/mengxw/p/8626299.html
Copyright © 2011-2022 走看看