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

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

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

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

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

GC回收

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

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

相关文章

jinfo 命令可以用来查看 Java 进程运行的 JVM 参数,命令如下...
原文链接:https://www.cnblogs.com/niejunlei/p/5987611.ht...
java 语言, 开发者不能直接控制程序运行内存, 对象的创建都是...
jvm
1.jvm的简单抽象模型:  2.类加载机制     双亲委派模...
堆外内存JVM启动时分配的内存,称为堆内存,与之相对的,在代...
1.springboot和tomcat2.springcloud的请求如何通过网关鉴权?...