jvm内存分配技术

来源:互联网 发布:浪漫主义文学 知乎 编辑:程序博客网 时间:2024/06/05 17:26
jvm 通过bump-the-pointer和TLAB用来加快内存分配。

Bump-the-pointer(撞点)技术跟踪在伊甸园空间创建的最后一个对象,这个对象会被放在伊甸园空间的顶部。如果之后需要创建对象,只需检查伊甸园空间是否有足够的剩余空间。如果有足够的空间,对象就会被创建在伊甸园空间,并且被放置在顶部(此时会更换标记位)。这样一来,每次创建新的对象时,只需要检查最后被创建的对象。这将极大地加快内存分配速度。但是,如果我们在多线程的情况下,事情将截然不同。如果想要以线程安全的方式以多线程在伊甸园空间存储对象,不可避免的需要加锁,而这将极大地的影响性能。

TLABsThread-Local Allocation Buffers)--本地线程分配区是HotSpot虚拟机针对多线程下Bump-the-pointer的解决方案。该方案为每一个线程在伊甸园空间分配一块独享的空间,这样每个线程只访问他们自己的TLAB空间,以此在避免加锁的情况下分配内存。



原创粉丝点击