赞
踩
java内存主要可分为程序计数器、堆、jvm栈、本地方法栈、方法区。
程序计数器PC: 线程私有,指向需要执行的下一条指令的位置。
堆: 存放对象实例。
jvm栈: 基础数据类型和引用类型。
本地方法栈: 存放本地方法。
方法区: 线程共享,存储类加载的信息、常量、静态变量。
java堆内存是所有线程所共享的,堆内存可分为新生代和老生代,而新生代又可分为一个Eden区和两个Survival区,这两个Survival区分别为Survival_from和Survival_to,这两个survival区轮流做survival_from和survival_to。而类的静态变量不用使用对象就可以直接调用的,会被放入永生代。
新生代中常用的垃圾收集算法为minorGC,假设这两个survival区分别标号为S0和S1,当Eden区第一次满了之后,jvm执行minorGC将Eden中仍就存活的对象放入S0中;当Eden区第二次满了,jvm继续执行minorGC将Eden中仍就存货的对象放入S1中,另外也需要将S0中仍就存活的对象放入S1中,也就是说此时S0为survival_from,S1为survival_to。下一次时S1是survival_from,而S0是survival_to。如此循环往复。
而老生代中存放的主要是已经存活了很久的对象。
垃圾回收算法: 标记-清除算法 复制算法 标记整理算法 分代收集算法
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。