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

如何制作一个网站做淘宝券网站模板psd

如何制作一个网站做淘宝券,网站模板psd,免费建设网站那个好,网站建设和平面设计1. 对象的创建 遇到new指令时 当Java虚拟机遇到一个字节码new指令时。 首先会去检查这个指令的参数是否能在常量池中定位到一个类的符号引用#xff0c;并且检查这个符号引用代表的类是否被加载、解析和初始化过。 如果没有#xff0c;那么必须执行类的加载过程(加载、检查…1. 对象的创建 遇到new指令时 当Java虚拟机遇到一个字节码new指令时。 首先会去检查这个指令的参数是否能在常量池中定位到一个类的符号引用并且检查这个符号引用代表的类是否被加载、解析和初始化过。 如果没有那么必须执行类的加载过程(加载、检查、准备、解析、初始化) 类加载后 类加载检查通过后接下来虚拟机会为新生对象分配内存。对象所需内存的大小在类加载完成后便可完全确定。 划分内存 如果Java堆中内存是绝对规整的那么只需一个指针作为分界点的指示器对象需要多少内存就移出多少内存。我们称这种方式为指针碰撞。 如果Java堆中的内存不是规整的那么虚拟机就必须维护一个表记录那些内存块是可用的在分配的时候从列表中找到一块足够大的空间划分给对象实例并更新列表的记录这种分配方式称为空闲列表。 分配安全 在线程并发情况下可能会出现正在给对象A分配一块内存但指针还没来得及修改对象B又使用了原来的指针进行分配这就会造成内存不安全。 解决方案1对分配内存空间的操作进行同步处理——实际上虚拟机是采用CAS配上失败重试的方式保证更新操作的原子性。 解决方案2把内存分配的动作按照线程划分在不同空间之中进行即每个线程在Java堆中预先分配一小块内存称为本地线程分配缓冲(TLAB) 分配内存之后该怎么做? Java虚拟机会将必要的信息存放到对象的对象头中其中包括这个对象是哪个类的实例、如何才能找到类的元数据信息、对象的哈希码、对象的GC分代年龄信息等。 分配好对象头之后对象创建才刚刚开始(Java程序的角度) 目前对象的构造函数即Class文件中的init()方法还没执行所有的字段都为默认的零值对象需要的其他资源和状态信息也还没有按照预定的意图构造好。new指令之后会接着执行init方法按照程序员的意愿对对象进行初始化这样一个真正可用的对象才算完全被构造出来。 2. 对象的内存布局 在HotSpot虚拟机中对象在堆内存中的存储布局可以划分为三个部分对象头、实例数据、对齐填充。 对象头结构 HotSpot虚拟机对象的对象头部分包括两类信息。 第一类是用于存储对象自身的运行时数据如哈希码(HashCode) 、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等官方称它为“MarkWord?。MarkWord被设计成一个有着动态定义的数据结构。 对象头的另外一部分是类型指针即对象指向它的类型元数据的指针Java虛拟机通过这个指针来确定该对象是哪个类的实例。并不是所有的虚拟机实现都必须在对象数据上保留类型指针换句话说查找对象的元数据信息并不一定要经过对象本身这点我们会在下一节具体讨论。此外如果对象是一个Java数组那在对象头中还必须有一块用于记录数组长度的数据因为虚拟机可以通过普通Java对象的元数据信息确定Java对象的大小但是如果数组的长度是不确定的将无法通过元数据中的信息推断出数组的大小。 对象第二部分数据(内存) 接下来实例数据部分是对象真正存储的有效信息即我们在程序代码里面所定义的各种类型的字段内容无论是从父类继承下来的还是在子类中定义的字段都必须记录起来。 对象第三部分 对象的第三部分是对齐填充这并不是必然存在的也没有特别的含义它仅仅起着占位符的作用。由于HotSpot虚拟机的自动内存管理系统要求对象起始地址必须是8字节的整数倍换句话说就是任何对象的大小都必须是8字节的整数倍。对象头部分已经被精心设计成正好是8字节的倍数(1倍或者2倍)因此如果对象实例数据部分没有对齐的话就需要通过对齐填充来补全。 3. 对象的访问定位 创建对象自然是为了后续使用该对象我们的Java程序会通过栈上的reference数据来操作堆上的具体对象。由于reference类型在《Java虚拟机规范》里面只规定了它是-一个指向对象的引用并没有定义这个引用应该通过什么方式去定位、访问到堆中对象的具体位置所以对象访问方式也是由虚拟机实现而定的主流的访问方式主要有使用句柄和直接指针两种: 句柄:如果使用句柄访问的话Java堆中将可能会划分出一块内存来作为句柄池reference中存储的就是对象的句柄地址而句柄中包含了对象实例数据与类型数据各自具体的地址信息其结构如图2-2所。 .如果使用直接指针访问的话Java堆中对象的内存布局就必须考虑如何放置访问类型数据的相关信息reference中存储的直接就是对象地址如果只是访问对象本身的话就不需要多一次间接访问的开销如图2-3所示。 两者的区别 使用直接指针来访问最大的好处就是速度更快它节省了一次指针定位的时间开销由于对象访问在Java中非常频繁因此这类开销积少成多也是一项极为可观的执行成本就本书讨论的主要虚拟机HotSpot而言它主要使用第二种方式进行对象访问。
http://www.hkea.cn/news/14257011/

相关文章:

  • 培训课程网站建设防水网站怎么做
  • 免费高清图片素材网站有哪些亚马逊的网站建设分析
  • 网站后台打不开的原因重庆seo代理
  • 全县网站建设情况通报个人专业网站备案
  • 乐昌市建设网站推广网站软文
  • 用vue开发的网站国内网站有哪些
  • 山西建设网站公司wordpress自适应淘宝客主题
  • 怎样做好网站wordpress搜索结果不存在页面
  • 萧山城市建设网站厦门高端网站建设公司
  • 标准网站建设哪家便宜青岛搜索推广排名
  • 南阳做网站优化网站 图标 gif
  • 物流网站建设平台分析配资网站开发
  • 怎么做引流网站全包装修公司哪家好点
  • 怎么套模板做网站seo推广怎么入门
  • 网站策划是干嘛的电子商务岗位有哪些
  • 河北省住房和城身建设厅网站哪些网站可以做邀请函
  • 南京制作网站速成班广告安装接单app
  • 网站建设 加盟怎样免费建设网站
  • 可以做代销的网站内部链接网站大全
  • 中国最大房产网站排名六安百度公司电话
  • 佛山新网站建设效果教育app定制
  • 怎么建设一个外国网站天津黑臭水体工程中标
  • 做网站什么主题好北京今天最新新闻
  • 重庆渝中区企业网站建设哪家好如何建设局域网内部网站
  • 帝国cms 网站迁移错版福州做网站的公司
  • 网站规划建设前期规划方案关于房产的网站有哪些
  • 君山区建设局网站wordpress头像修改
  • 定制开发网站如何报价单网页制作与网站建设技术大全pdf
  • 推荐网站建设公司前端如何优化网站性能
  • 唐山做企业网站公司兖州中材建设有限公司网站