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

哪个网站可以做一对一老师专业网站建设质量推荐

哪个网站可以做一对一老师,专业网站建设质量推荐,网站开发留言板,有哪些免费建站的网站Java 虚拟机自动内存管理#xff0c;不需要像C/C为每一个 new 操作去写对应的 delete/free 操作#xff0c;不容易出现内存泄漏和内存溢出。但把内存控制权交给 Java 虚拟机#xff0c;一旦出现内存泄漏和溢出问题#xff0c;如不了解虚拟机怎样使用内存#xff0c;将很难…Java 虚拟机自动内存管理不需要像C/C为每一个 new 操作去写对应的 delete/free 操作不容易出现内存泄漏和内存溢出。但把内存控制权交给 Java 虚拟机一旦出现内存泄漏和溢出问题如不了解虚拟机怎样使用内存将很难排查错误。 JDK1.8内存分布 堆 Java 虚拟机所管理的内存中最大的一块Java 堆是所有线程共享的一块内存区域在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例几乎所有的对象实例以及数组都在这里分配内存。 字符串常量值 JVM 为了提升性能和减少内存消耗针对字符串String 类专门开辟的一块区域主要为了避免字符串的重复创建。 虚拟机栈 除了一些 Native 方法调用是通过本地方法栈实现的其他所有的 Java 方法调用都是通过虚拟机栈实现。 本地方法栈 虚拟机栈为虚拟机执行 Java 方法 也就是字节码服务而本地方法栈为虚拟机使用的 Native 方法服务。 程序计数器 程序计数器是一块较小的内存空间可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节码指令分支、循环、跳转、异常处理、线程恢复等功能都需要依赖这个计数器来完成。 作用 字节码解释器通过改变程序计数器来依次读取指令从而实现代码的流程控制如顺序执行、选择、循环、异常处理。在多线程的情况下程序计数器用于记录当前线程执行的位置从而当线程被切换回来的时候能够知道该线程上次运行到哪儿了 运行时常量池 运行时常量池里放常量池表。常量池表存放编译期生成的各种字面量Literal和符号引用Symbolic Reference。字面量包括整数、浮点数和字符串字面量。符号引用包括类符号引用、字段符号引用、方法符号引用、接口方法符号。 直接内存 一种特殊的内存缓冲区不在 Java 堆或方法区中分配的而是通过 JNI 的方式在本地内存上分配的。直接内存并不是虚拟机运行时数据区的一部分也不是虚拟机规范中定义的内存区域但是这部分内存也被频繁地使用。而且也可能导致 OutOfMemoryError 错误出现。 HotSpot 虚拟机在 Java 堆中对象分配、布局和访问过程 第一步类加载检查 虚拟机遇到一条 new 指令时首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有那必须先执行相应的类加载过程。 第二步分配内存 对象所需内存大小在类加载后可确定。分配方式有指针碰撞和空闲列表。 指针碰撞 适用场合堆内存规整即没有内存碎片的情况下。原理用过的内存全部整合到一边没有用过的内存放在另一边中间有一个分界指针只需要向着没用过的内存方向将该指针移动对象内存大小位置即可。使用该分配方式的 GC 收集器Serial, ParNew空闲列表 适用场合堆内存不规整的情况下。原理虚拟机会维护一个列表该列表中会记录哪些内存块是可用的在分配的时候找一块儿足够大的内存块儿来划分给对象实例最后更新列表记录。使用该分配方式的 GC 收集器CMS解决内存分配并发问题CAS失败重试 CAS 是乐观锁的一种实现方式。所谓乐观锁就是每次不加锁而是假设没有冲突而去完成某项操作如果因为冲突失败就重试直到成功为止。虚拟机采用 CAS 配上失败重试的方式保证更新操作的原子性。TLAB 为每一个线程预先在 Eden 区分配一块儿内存JVM 在给线程中的对象分配内存时首先在 TLAB 分配当对象大于 TLAB 中的剩余内存或 TLAB 的内存已用尽时再采用上述的 CAS 进行内存分配 第三步初始化零值 内存分配完成后虚拟机需要将分配到的内存空间都初始化为零值不包括对象头这一步操作保证了对象的实例字段在 Java 代码中可以不赋初始值就直接使用程序能访问到这些字段的数据类型所对应的零值。 第四步设置对象头 初始化零值完成之后虚拟机要对对象进行必要的设置例如这个对象是哪个类的实例、如何才能找到类的元数据信息、对象的哈希码、对象的 GC 分代年龄等信息。 这些信息存放在对象头中。 另外根据虚拟机当前运行状态的不同如是否启用偏向锁等对象头会有不同的设置方式。 第五步执行init方法 在上面工作都完成之后从虚拟机的视角来看一个新的对象已经产生了但从 Java 程序的视角来看对象创建才刚开始init 方法还没有执行所有的字段都还为零。所以一般来说执行 new 指令之后会接着执行 init 方法把对象按照程序员的意愿进行初始化这样一个真正可用的对象才算完全产生出来。 对象的内存布局 在 Hotspot 虚拟机中每个对象的内存分为 对象头、实例数据和对齐填充。 对象头包括用于存储对象自身的运行时数据哈希码、GC 分代年龄、锁状态标志等等和类型指针即对象指向它的类元数据的指针虚拟机通过这个指针确定这个对象是哪个类的实例。 实例数据部分是对象真正存储的有效信息即在程序中所定义的各种类型的字段内容。 对齐填充部分不是必然存在无特别含义仅起占位作用。 因为 Hotspot 虚拟机的自动内存管理系统要求对象起始地址必须是 8 字节的整数倍即对象大小必须是 8 字节的整数倍。而对象头部分正好是 8 字节的倍数1 倍或 2 倍因此当对象实例数据部分没有对齐时需通过对齐填充来补全。 对象的访问定位 Java 通过栈上的 reference 数据操作堆上的具体对象。对象的访问方式由虚拟机实现确定主流访问方式使用句柄、直接指针。 使用句柄Java 堆划分出一块内存作为句柄池reference 中存储对象的句柄地址而句柄中包含对象实例数据与对象类型数据各自的具体地址信息。好处reference 中存储的是稳定的句柄地址在对象被移动时只会改变句柄中的实例数据指针而 reference 本身不需要修改 直接指针reference 中存储的直接就是对象的地址。好处速度快节省一次指针定位的时间开销
http://www.pierceye.com/news/768787/

相关文章:

  • 潍坊市建设局网站网络工程师 网站建设
  • 做网站要求什么条件计算机网络技术学什么
  • 建设网站呼叫中心有什么好处中国能源建设集团有限公司级别
  • 免费论坛建站二 网站建设的重要性
  • wordpress站点迁移怎样做带音乐的表白网站
  • 海淀网站制作网站建设基本技术
  • 做一个平面网站的成本如何搭建一个app平台
  • 建设工程学部研究生培养网站义乌网站建设和制作
  • 简单的模板网站吉安网站建设jxthw
  • js做的网站佛山本地的网站设计公司
  • 企业网站页面网站建设朝阳
  • ui设计工具有哪些百度seo排名优化系统
  • 网站建设案例简介怎么写淘宝官方网站主页
  • 国外网站 dns南京模板做网站
  • 河北企业网站建设技术江西省外省建设入库网站
  • 网站建设的概念如何将自己做的网站放到网上去
  • 网站维护明细报价表最新的网站建设架构
  • 百度大全seo推广话术
  • 做网站赚钱流程英文网站建设注意什么
  • 腾讯 云上做网站教程开源系统 网站
  • 临沂罗庄做网站服装商城网站建设价格
  • 保定企业官网搭建对网站有效的优化软件
  • 网站后台代码在哪修改股权众筹网站建设
  • 站群源码北京公司注销
  • 营销型网站策划建设台州市住房和城乡建设厅网站
  • 达内网站开发课程wordpress自动添加标签页
  • 免费的个人网站空间我做淘宝网站卖东西怎么激活
  • 织梦dedecms女性时尚门户网站模板常州网络推广平台
  • 网站怎么在百度搜不到资源网源码
  • 怎样网站制作设计广西住房城乡建设部官网