微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

CAS (compare AND swap ) 机制:比较和交换机制,解决分配对象内存的并发问题

分配内存的方式:指针碰撞和空闲列表

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

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

GC回收

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐