对象的创建与内存分配
当jvm收到一个new指令时,会检查指令中的参数是否存在这个符号的引用,还会检测 这个类是否已经被加载过了,否则还会进行一次类的加载
分配内存通常的两种形式:
指针碰撞
空闲列表
指针碰撞
使用指针碰撞的前提是对内存是完整的,用过的内存和没用的内存各在一边,每次
分配的时候只需要将指针向空闲内存一方移动一段和内存大小相等区域即可。
也可以将内存分配安排在每个线程独有的空间进行,每个线程首先在堆内存中分配 一小块内存,称为本地分配缓存(TLAB : Thread Local Allocation Buffer)
空闲列表
这种适用于内存非规整的情况,这种情况下JVM会维护一个内存列表,记录哪些内存 区域是空闲的,大小是多少。给对象分配空间的时候去空闲列表里查询到合适的区域然后进行分配即可。
JVM 并发
Last updated
Was this helpful?