当前位置: 首页 > news >正文

北京米兰广告设计有限公司在线seo优化工具

北京米兰广告设计有限公司,在线seo优化工具,WordPress新闻面包屑主题,3g网站建设jvm如何进行内存分配 内存分配方式内存分配方式的选择并发场景下的内存分配内存空间的初始化构造函数 内存分配方式 指针碰撞空闲列表 指针碰撞法: 假设Java堆中内存是绝对规整的,所有被使用过的内存都被放在一边,空闲的内存被放在另一边&a…

jvm如何进行内存分配

        • 内存分配方式
        • 内存分配方式的选择
        • 并发场景下的内存分配
        • 内存空间的初始化
        • 构造函数

内存分配方式

  • 指针碰撞
  • 空闲列表

指针碰撞法:

假设Java堆中内存是绝对规整的,所有被使用过的内存都被放在一边,空闲的内存被放在另一边,中间放着一个指针作为分界点的指示器,那所分配内存就仅仅是把那个指针向空闲空间方向挪动一段与对象大小相等的距离,这种分配方式称为“指针碰撞”

空闲列表法:

但如果Java堆中的内存并不是规整的,已被使用的内存和空闲的内存相互交错在一起,那就没有办法简单地进行指针碰撞了,虚拟机就必须维护一个列表记录上哪些内存块是可用的,在分配的时候从列表中找到一块足够大的空间划分给对象实例,并更新列表上的记录,这种分配方式称为“空闲列表”

内存分配方式的选择

Java堆是否规整又由所采用的垃圾收集器是否带有空间压缩整理(Compact)的能力决定。因此,当使用Serial、ParNew等带压缩整理过程的收集器时,系统采用的分配算法是指针碰撞,既简单又高效;而当使用CMS这种基于清除(Sweep)算法的收集器时,理论上就只能采用较为复杂的空闲列表来分配内存。

并发场景下的内存分配

并发场景下可能出现多个线程同时创建对象的情况,这种时刻的内存分配是明显存在问题的,如果在给A对象分配好内存了,但是指针还没来得及修改,此时B对象刚获取指针的位置并且分配内存那么就会造成内存区域重叠,这种情况的处理方案有两种。

  1. 一种是对分配内存空间的动作进行同步处理——实际上虚拟机是采用CAS配上失败重试的方式保证更新操作的原子性

  2. 另外一种是把内存分配的动作按照线程划分在不同的空间之中进行,即每个线程在Java堆中预先分配一小块内存,称为本地线程分配缓冲(Thread Local AllocationBuffer,TLAB,哪个线程要分配内存,就在哪个线程的本地缓冲区中分配,只有本地缓冲区用完了,分配新的缓存区时才需要同步锁定

其实第一种方案就是给分配内存的操作加锁,指针碰撞的时候每个线程都不断尝试获取锁,而拿到锁的线程只有分配完对象内存空间并且修改指针后,才释放锁并通知其他线程,保证原子性。而加锁必然会造成性能上的开销,但是如果使用第二种方式,即使用缓冲区也就是经典的以空间换时间思想来减少加锁操作保证运行的效率。

内存空间的初始化

内存分配完成之后,虚拟机必须将分配到的内存空间(但不包括对象头)都初始化为零值,如果使用了TLAB的话,这一项工作也可以提前至TLAB分配时顺便进行。这步操作保证了对象的实例字段在Java代码中可以不赋初始值就直接使用,使程序能访问到这些字段的数据类型所对应的零值。

构造函数

在上面工作都完成之后,从虚拟机的视角来看,一个新的对象已经产生了。但是从Java程序的视角看来,对象创建才刚刚开始——构造函数即Class文件中的()方法还没有执行,所有的字段都为默认的零值,对象需要的其他资源和状态信息也还没有按照预定的意图构造好。

一般来说(由字节码流中new指令后面是否跟随invokespecial指令所决定,Java编译器会在遇到new关键字的地方同时生成这两条字节码指令,但如果直接通过其他方式产生的则不一定如此),new指令之后会接着执行init()方法,按照程序员的意愿对对象进行初始化,这样一个真正可用的对象才算完全被构造出来。

http://www.dt0577.cn/news/50663.html

相关文章:

  • 本地搭建linux服务器做网站武汉seo网站排名优化
  • 沈阳哪家公司做的网站靠谱舆情信息网
  • 欧美做的爱爱网站优化推荐
  • 找网站开发项目sem网站推广怎么做
  • 亚马逊跨境电商开店赚钱吗seo公司 引擎
  • 做竞猜网站犯法吗第一推广网
  • 购物网站php源代码爱站网关键词挖掘
  • 商业网站的网址seo快速排名
  • 做ps的素材哪个网站郑州新闻发布
  • 青海住房城乡建设厅网站技师培训
  • 广州建网站多少钱互联网推广的好处
  • 网站建设哪家公司便宜系统优化工具
  • 企业网站模板大全淘宝运营培训多少钱
  • wordpress自媒体二号seo新方法
  • 建设网上银行怎么开通360优化大师安卓版下载
  • 网站建设分析西安seo学院
  • 网站架构演变过程海南百度推广中心
  • 长春seo结算网站关键词排名怎么优化
  • 公司网站建设完成通知一个好的产品怎么推广
  • uc浏览器网页版打开seo全网营销的方式
  • 网站开发必须要用js南京百度
  • 上海涛飞专业网站建设唐山网站建设方案优化
  • 做带支付功能的网站杭州网站推广大全
  • 网站系统jsp模板apple私人免费网站怎么下载
  • 网站开发所用到的技术百度搜索引擎优化方式
  • wordpress添加新角色如何做seo搜索优化
  • 本地广东中山网站建设辽阳网站seo
  • 开源 html5网站模板semester什么意思
  • 互联网资源整合平台口碑优化seo
  • 做外贸需要关注的网站有什么问题深圳外贸网站制作