Java中怎么为对象创建分配内存

Java中怎么为对象创建分配内存,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

创新互联建站致力于互联网网站建设与网站营销,提供成都网站设计、网站建设、网站开发、seo优化、网站排名、互联网营销、成都小程序开发、公众号商城、等建站开发,创新互联建站网站建设策划专家,为不同类型的客户提供良好的互联网应用定制解决方案,帮助客户在新的全球化互联网环境中保持优势。

1、指针碰撞

        假设java堆中内存是绝对规整的,所有用过的内存都放在一边,空闲的内存放在另一边,中间放着一个指针做为分界点的指示器,那对象所分配的内存就仅仅是把那个指针向空闲空间挪动一段与对象大小相等的距离

2、空闲列表

        如果java堆中的内存并不是规整的,已使用的内存和空闲的内存相互交错,那虚拟机就必须维护一个列表,记录上哪些内存是可用的,在分配的时候从列表中找到一块足够大的空间划分给对象实例,并更新列表上的记录

        并发情况下,线程是不安全的,可能出现正在给对象A分配内存,指针还没来得及修改,对象B又同时使用了原来的指针来分配内存的情况。

        解决方案:

                1、CAS  虚拟机采用CAS + 失败重试的方式保证更新操作的原子性

                2、本地线程分配缓存(TLAB) 即每个线程预先在堆中分配一小块内存,哪个线程要分配内存,就在哪个线程的TLAB上分配,只有TLAB用完并分配新的TLAB时,才会需要使用1方式 。 虚拟机是否使用TLAB,可以通过-XX:+/-UseTLAB参数来设定。

关于Java中怎么为对象创建分配内存问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


标题名称:Java中怎么为对象创建分配内存
本文URL:http://myzitong.com/article/jsheci.html