Java 内存分配和垃圾

2016-05-12  本文已影响38人  鬼谷神奇

在JDK7中,有5种垃圾收集器:

Serial收集器
Parallel收集器
Parallel Old收集器 (Parallel Compacting GC)收集器
Concurrent Mark & Sweep GC (or “CMS”)收集器
Garbage First (G1) 收集器

Java垃圾回收器

  • 在HotSpot中,方法区仅仅是逻辑上的独立,实际上还是包含在Java堆区内,也就是说,方法区在物理上属于Java堆区的一部分
  • 方法区中存储了每一个Java类的结构信息,如:运行时常量池、字段和方法数据、构造函数和普通方法的字节码内容以及类、实例、接口初始化时需要用到的特殊方法等数据
  • 方法区也被称为永久代(Permanent Generation),主要是因为方法区除了可以通过选项“-XX:MaxPermSize”设置内存大小进行动态扩展外,并不会像Java堆区那样频繁被GC执行回收,甚至还可以显示指定是否需要在程序运行时回收方法区中的数据,如果没有指定,GC的回收目标仅针对方法区中的常量池和类型卸载
  • 运行时常量池属于方法区的一部分,一个有效的字节码文件除了包含类的版本信息、字段、方法以及接口等描述信息外,还包含一项信息就是常量池表(Constant Pool Table),那么运行时常量池表就是字节码文件中常量池表的运行时表示形式。
  • 当类装载器成功将一个类或接口装载进JVM后,就会创建与之对应的运行时常量池。
上一篇下一篇

猜你喜欢

热点阅读