目录
成都创新互联公司主要从事做网站、网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务册亨,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792一、 运行时数据区
1. 程序计数器
2. Java虚拟机栈
3. 本地方法栈
4. Java堆
5. 方法区
二、 堆内存区域划分
三、 GC垃圾回收机制
哪些内存需要回收?
垃圾收集算法
1、标记-清除
2、复制算法
3、标记-整理算法
4、分代收集算法
程序计数器用来存储下一条指令的地址,即将要执行的指令代码。由执行引擎读取下一条指令。
java中最小的执行单位是线程,因为虚拟机的是多线程的,每个线程是抢夺cpu时间片,程序计数器就是存储这些指令去做什么,比如循环,跳转,异常处理等等需要依赖它。
2. Java虚拟机栈描述的是Java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息,每个方法从调用直至执行完成的过程,都对应这一个栈帧在虚拟机栈中入栈到出栈的过程
3. 本地方法栈与虚拟机的作用是相似的,只不过虚拟机栈是服务Java方法的,而本地方法栈是为虚拟机调用Native方法服务的
4. Java堆是Java虚拟机中内存大的一块,是被所有线程共享的,在虚拟机启动时候创建,Java堆唯一的目的就是存放对象实例,几乎所有的对象实例都在这里分配内存,是垃圾回收的重点区域。
5. 方法区用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译后的代码等数据。
二、堆内存区域划分Java8及之后堆内存分为:新生区(新生代)+老年区(老年代)
新生区分为Eden(伊甸园)区和Survivor(幸存者)区
三、GC垃圾回收机制哪些内存需要回收?1、引用计数法
给对象中添加一个引用计数器,每当一个地方引用这个对象时,计数器值+1;当引用失效时,计数器值-1。计数值为0的对象就是不可能再被使用的,在主流的JVM中没有选用引用计数法来管理内存,最主要的原因是引用计数法无法解决对象的循环引用问题,造成内存泄漏
2、可达性分析法
这个算法的基本思想是通过一系列称为“GC Roots”的对象作为起始点,从这些节点向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没有任何引用链时,则此对象是不可用的。
方法区的垃圾回收主要回收两部分内容:1. 废弃常量。2. 无用的类
垃圾收集算法 1、标记-清除2、复制算法 3、标记-整理算法4、分代收集算法年轻代(Minor GC/Young GC)使用复制算法
Minor GC/Young GC的过程
1. 正常新创建的对象会直接进入eden区,当eden区内存满了时,触发Minor GC。
2. 首先对eden区存活的对象通过可达性分析法进行识别,并对其进行标记
3. 将eden区中存活的对象和servivor0中的对象复制到servivor1中
4. 对eden区中的垃圾进行清除
5. 当下一次Minor GC来临时,先执行步骤2,再将eden区中存活的对象和servivor1中的对象复制到servivor0中,最后执行步骤4,以此类推
6. 每经过一轮Minor GC,存活的对象年龄+1,在满了15时,对象直接进入老年代
老年代 (Full GC/Major GC)使用标记整理算法,当老年代中的内存满了时,触发Full GC
Full GC/Major GC的过程
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧