tbwshc

Java内存管理优化笔记

1. 垃圾回收
  JVM运行环境中垃圾对象的定义:
  一个对象创建后被放置在JVM的堆内存(heap)中,当永远不再引用这个对象时,它将被JVM在堆内存(heap)中回收。被创建的对象不能再生,同时也没法通过程序语句释放它们。
  不可到达的对象被JVM视为垃圾对象,JVM将给这些对象打上标记,然后清扫回收它们,并将散碎的内存单元收集整合。
  JVM管理的两种类型的内存:
  堆内存(heap),主要存储程序在运行时创建或实例化的对象与变量。
  栈内存(stack),主要存储程序代码中声明为静态(static)(或非静态)的方法。
  堆内存(heap)通常情况下被分为两个区域:新对象(new object)区域与老对象(old object)区域。
  新对象区域:
  又可细分为Eden区域、From区域与To区域。
  Eden区域保存新创建的对象。当该区域中的对象满了后,JVM系统将做可达性测试,主要任务是检测有哪些对象由根集合出发是不可到达的,这些对象就可被JVM回收,且将所有的活动对象从Eden区域拷到To区域,此时有一些对象将发生状态交换,有的对象就从To区域被转移到From区域,此时From区域就有了对象。
  该过程执行期间,JVM的性能非常低下,会严重影响到正在运行的应用的性能。
  老对象区域:
  在老对象区域中的对象仍有一个较长的生命周期。经过一段时间后,被转入tb老对象区域的对象就变成了垃圾对象,此时它们被打上相应的标记,JVM将自动回收它们。
  建议不要频繁强制系统做垃圾回收,因为JVM会利用有限的系统资源,优先完成垃圾回收工作,致使应用无法快速响应来自用户端的请求,这样会影响系统的整体性能。
  2. JVM中对象的生命周期
  对象的整个生命周期大致分为7个阶段:创建(creation)、应用(using)、不可视(invisible)、不可到达(unreachable)、可收集(collected)、终结(finalized)、释放(free)。
  1) 创建阶段
  系统通过下面步骤,完成对象的创建:
  a) 为对象分配存储空间
  b) 开始构造对象
  c) 递归调用其超类的构造方法
  d) 进行对象实例初始化与变量初始化
  e) 执行构造方法体
  在创建对象时的几个关键应用规则:
  避免在循环体中创建对象,即使该对象占用内存空间不大
  尽量及时使对象符合垃圾回收标准
  不要采用过深的继承层次
  访问本地变量优于访问类中的变量

posted on 2013-06-28 16:59 chen11-1 阅读(225) 评论(0)  编辑  收藏 所属分类: 随笔


只有注册用户登录后才能发表评论。


网站导航: