栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

jvm-对象的创建和分配和垃圾回收

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jvm-对象的创建和分配和垃圾回收

CAS (compare AND swap ) 机制:比较和交换机制,解决分配对象内存的并发问题分配内存的方式:指针碰撞和空闲列表

 以前的jvm是采用CAS解决线程并发的问题,但存在不断循环CAS浪费cpu,现在多采用给每个线程分配不同的内存地址,在虚拟机中,默认分配内存会先走第二种,开发者关闭了才走CAS

一个java的对象包含这些东西:

GC回收

判断对象存活的方法中,一般常用的是引用计数算法,就是一个对象有引用时+1,这个比较简单,但是当两个对象相互指向时就麻烦了,因为按理说这两个是没用的对象,应该是垃圾,应该被回收,但是造成了了一个死锁,所以无法被回收,目前的虚拟机中采用的是可达性分析算法

可达性算法的原理:GC中有个数组存储着栈,静态变量,常量池中等数据为根节点,去遍历,假如没有遍历到兑中这个对象就会被回收中一个对象没有任何东西引用他,则视为一个垃圾,应该被回收,例如下面的死锁,他们只是在堆中互相指引着,但是在GC roots中没有东西指引他们两个,所以GC视为垃圾

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/603608.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号