java内存gc相关复习
##平台无关性
jvm如何加载一个.class 文件的, classloader -》runtime data area -〉execution engine -》native interface
java 反射机制是 在运行状态中,对于任意一个类都能知道这个类的所有属性和方法,对于任意一个对象都能任意调用它的方法和属性;这种能力称 java 反射机制。
classforname();获取实例 , method 或者方法,invoke 进行调用。setacessiable 为true
bootstrapclassloader extclassloader appclassloader
##为什么有双亲委派机制?
避免同一个class被多次加载,如果一个class 被加载是需要先去查询父类加载器是否已经加载,如加载直接返回。
class.forname 是完成初始化的
classloader.loadclass 为未完成初始化的
元空间metaspace 和 永久代区别 都属于 方法区,jdk8 之后元空间代替了永久代,元空间使用本地内存,永久代使用jvm内存。
metaspace优势于永久代的几点:
- 字符串常量池存储在永久代中容易出现性能问题和内存溢出
- 类的方法和信息大小难易确认给永久代带来困难
- 永久代给gc 带来复杂度提升
- hotspot 和 jrockit 可能要合并