当前位置: 首页 > news >正文 外贸先做网站再开公司wordpress做下载站 news 2025/11/5 19:43:24 外贸先做网站再开公司,wordpress做下载站,网站视觉艺术设计及色彩搭配,网站服务器和空间对象的创建 对象创建的主要流程#xff1a; 类加载推荐博客#xff1a;JVM类加载机制详解 类加载检查 虚拟机遇到一条new指令时#xff0c;首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用#xff0c;并且检查这个符号引用代表的类是否已被加载、解析…对象的创建 对象创建的主要流程 类加载推荐博客JVM类加载机制详解 类加载检查 虚拟机遇到一条new指令时首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有那必须先执行相应的类加载过程。 new指令对应到语言层面上讲是new关键词、对象克隆、对象序列化等。 分配内存 在类加载检查通过后接下来虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成后便可完全确定为对象分配空间的任务等同于把一块确定大小的内存从Java堆中划分出来。 这个步骤有两个问题 如何划分内存。在并发情况下 可能出现正在给对象A分配内存指针还没来得及修改对象B又同时使用了原来的指针来分配内存的情况。 划分内存的方法 指针碰撞Bump the Pointer(默认用指针碰撞) 如果Java堆中内存是绝对规整的所有用过的内存都放在一边空闲的内存放在另一边中间放着一个指针作为分界点的指示器那所分配内存就仅仅是把那个指针向空闲空间那边挪动一段与对象大小相等的距离。空闲列表Free List 如果Java堆中的内存并不是规整的已使用的内存和空闲的内存相互交错那就没有办法简单地进行指针碰撞了虚拟机就必须维护一个列表记录上哪些内存块是可用的在分配的时候从列表中找到一块足够大的空间划分给对象实例 并更新列表上的记录。 解决并发问题的方法 CAScompare and swap 虚拟机采用CAS配上失败重试的方式保证更新操作的原子性来对分配内存空间的动作进行同步处理。本地线程分配缓冲Thread Local Allocation Buffer,TLAB 把内存分配的动作按照线程划分在不同的空间之中进行即每个线程在Java堆中预先分配一小块内存。通过-XX:/-UseTLAB参数来设定虚拟机是否使用TLAB(JVM会默认开启-XX:UseTLAB)-XX:TLABSize 指定TLAB大小。 初始化零值 内存分配完成后虚拟机需要将分配到的内存空间都初始化为零值不包括对象头 如果使用TLAB这一工作过程也可以提前至TLAB分配时进行。这一步操作保证了对象的实例字段在Java代码中可以不赋初始值就直接使用程序能访问到这些字段的数据类型所对应的零值。 设置对象头 初始化零值之后虚拟机要对对象进行必要的设置例如这个对象是哪个类的实例、如何才能找到类的元数据信息、对象的哈希码、对象的GC分代年龄等信息。这些信息存放在对象的对象头Object Header之中。 在HotSpot虚拟机中对象在内存中存储的布局可以分为3块区域对象头Header、 实例数据Instance Data和对齐填充Padding。 HotSpot虚拟机的对象头包括两部分信息第一部分用于存储对象自身的运行时数据 如哈希码HashCode、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等。对象头的另外一部分是类型指针即对象指向它的类元数据的指针虚拟机通过这个指针来确定这个对象是哪个类的实例。 对于大部分处理器对象以8字节整数倍来对齐填充都是最高效的存取方式。 执行init()方法 执行init()方法即对象按照程序员的意愿进行初始化。对应到语言层面上讲就是为属性赋值注意这与上面的赋零值不同这是由程序员赋的值和执行构造方法。 对象的内存分配 对象栈上分配 我们通过JVM内存分配可以知道JAVA中的对象都是在堆上进行分配当对象没有被引用的时候需要依靠GC进行回收内存如果对象数量较多的时候会给GC带来较大压力也间接影响了应用的性能。为了减少临时对象在堆内分配的数量JVM通过逃逸分析确定该对象不会被外部访问。如果不会逃逸可以将该对象在栈上分配内存这样该对象所占用的内存空间就可以随栈帧出栈而销毁就减轻了垃圾回收的压力。 JIT热点探测技术 在 HotSpot 虚拟机中的热点探测是JIT优化的条件热点探测是基于计数器的热点探测采用这种方法的虚拟机会为每个方法建立计数器统计方法的执行次数如果执行次数超过一定的阈值就认为它是“热点方法”。 虚拟机为每个方法准备了两类计数器方法调用计数器Invocation Counter和回边计数器Back Edge Counter。在确定虚拟机运行参数的前提下这两个计数器都有一个确定的阈值当计数器超过阈值溢出了就会触发 JIT 编译。 方法调用计数器 用于统计方法被调用的次数方法调用计数器的默认阈值在客户端模式下是 1500 次在服务端模式下是 10000 次(我们用的都是服务端java –version查询)可通过-XX: CompileThreshold来设定。回边计数器 用于统计一个方法中循环体代码执行的次数在字节码中遇到控制流向后跳转的指令称为“回边”Back Edge该值用于计算是否触发 C1 编译的阈值在不开启分层编译的情况下在服务端模式下是10700。 满足以上两个条件之一都是热点方法。 逃逸分析的原理 分析对象动态作用域当一个对象在方法中定义后它可能被外部方法所引用。比如调用参数传递到其他方法中这种称之为方法逃逸。甚至还有可能被外部线程访问到例如赋值给其他线程中访问的变量这个称之为线程逃逸。从不逃逸到方法逃逸到线程逃逸称之为对象由低到高的不同逃逸程度。 如果确定一个对象不会逃逸出线程之外那么让对象在栈上分配内存可以提高JVM的效率。 当然逃逸分析技术属于JIT的优化技术所以必须要符合热点代码JIT才会优化另外对象如果要分配到栈上需要将对象拆分这种编译优化就叫做标量替换技术。 public User test1() {User user new User();user.setId(1);user.setName(test);//TODO 保存到数据库return user; }public void test2() {User user new User();user.setId(1);user.setName(test);//TODO 保存到数据库 }很显然test1方法中的user对象被返回了这个对象的作用域范围不确定。test2方法中的user对象我们可以确定当方法结束这个对象就可以认为是无效对象了对于这样的对象我们其实可以将其分配在栈内存里让其在方法结束时跟随栈内存一起被回收掉。 标量替换 通过逃逸分析确定该对象不会被外部访问并且对象可以被进一步分解时JVM不会创建该对象而是将该对象成员变量分解若干个被这个方法使用的成员变量所代替这些代替的成员变量在栈帧或寄存器上分配空间这样就不会因为没有一大块连续空间导致对象内存不够分配。开启标量替换参数(-XX:EliminateAllocations)JDK7之后默认开启。 标量与聚合量 标量即不可被进一步分解的量而JAVA的基本数据类型就是标量如intlong等基本数据类型以及reference类型等标量的对立就是可以被进一步分解的量而这种量称之为聚合量。而在JAVA中对象就是可以被进一步分解的聚合量。 对象在Eden区分配 大多数情况下对象在新生代中 Eden 区分配。当 Eden 区没有足够空间进行分配时虚拟机将发起一次Minor GC。 大量的对象被分配在eden区eden区满了后会触发minor gc可能会有99%以上的对象成为垃圾被回收掉剩余存活的对象会被挪到为空的那块survivor区下一次eden区满了后又会触发minor gc把eden区和survivor区垃圾对象回收把剩余存活的对象一次性挪动到另外一块为空的survivor区因为新生代的对象都是朝生夕死的存活时间很短所以JVM默认的8:1:1的比例是很合适的让eden区尽量的大survivor区够用即可。 大对象直接进入老年代 大对象就是需要大量连续内存空间的对象比如字符串、数组。JVM参数 -XX:PretenureSizeThreshold 可以设置大对象的大小如果对象超过设置大小会直接进入老年代不会进入年轻代这个参数只在Serial和ParNew两个收集器下有效。 长期存活的对象将进入老年代 既然虚拟机采用了分代收集的思想来管理内存那么内存回收时就必须能识别哪些对象应放在新生代哪些对象应放在老年代中。为了做到这一点虚拟机给每个对象一个对象年龄Age计数器。 如果对象在 Eden 出生并经过第一次Minor GC后仍然能够存活并且能被Survivor容纳的话将被移动到Survivor空间中并将对象年龄设为1。对象在Survivor中每熬过一次MinorGC年龄就增加1岁当它的年龄增加到一定程度默认为15岁CMS收集器默认6岁不同的垃圾收集器会略微有点不同就会被晋升到老年代中。对象晋升到老年代的年龄阈值可以通过参数 -XX:MaxTenuringThreshold 来设置。 对象动态年龄判断 当前放对象的Survivor区域里(其中一块区域放对象的那块s区)一批对象的总大小大于这块Survivor区域内存大小的50%(-XX:TargetSurvivorRatio可以指定)那么此时大于等于这批对象年龄最大值的对象就可以直接进入老年代了例如Survivor区域里现在有一批对象年龄1年龄2年龄n的多个年龄对象总和超过了Survivor区域的50%此时就会把年龄n(含)以上的对象都放入老年代。这个规则其实是希望那些可能是长期存活的对象尽早进入老年代。对象动态年龄判断机制一般是在minor gc之后触发的。 对象内存回收 堆中几乎放着所有的对象实例对堆垃圾回收前的第一步就是要判断哪些对象已经死亡即不能再被任何途径使用的对象。 通过一下两种算法判断是否是垃圾对象。 引用计数法 假设有个一对象ClassA任何一个对象引用了ClassAClassA的引用计数器就会加1引用失效引用计数器就会减1。如果ClassA引用计数器为0那么ClassA就会被回收。 这个方法实现简单效率高但是目前主流的虚拟机中并没有选择这个算法来管理内存其最主要的原因是它很难解决对象之间相互循环引用的问题。 可达性分析算法 可达性分析法也被称之为根搜索法可达性是指如果一个对象被一个或多个在程序中的变量通过直接或间接方式被其它可达的对象引用那么该对象就是可达的。更准确的说一个对象只有满足下述两个条件之一就会被判断为可达的 对象是属于根集中的对象对象被一个可达的对象引用 在这里我们引出了一个专有名词“根集”指正在执行的Java程序可以访问的引用变量的集合程序可以使用引用变量访问对象的属性和调用对象的方法。在 JVM 中会将以下对象标记为根集中的对象具体包括 虚拟机栈栈帧中的本地变量表中引用的对象方法区中的常量引用的对象方法区中的类静态属性引用的对象本地方法栈中 JNINative 方法的引用对象 根集中的对象称之为GC Roots即根对象。可达性分析法的基本思路是将一系列的根对象作为起始点从这些节点开始向下搜索搜索所走过的路径称为引用链如果一个对象到根对象没有任何引用链相连那么这个对象就不是可达的也称之为不可达对象。 如上图所示形象的展示了可达对象与不可达对象其中灰色的是不可达对象可以被垃圾收集的对象。在可达性分析法中对象有两种状态要么是可达的、要么是不可达的在判断一个对象的可达性的时候就需要对对象进行标记。 文章转载自: http://www.morning.rbjth.cn.gov.cn.rbjth.cn http://www.morning.xysdy.cn.gov.cn.xysdy.cn http://www.morning.bkpbm.cn.gov.cn.bkpbm.cn http://www.morning.lxhgj.cn.gov.cn.lxhgj.cn http://www.morning.rrgqq.cn.gov.cn.rrgqq.cn http://www.morning.qsy40.cn.gov.cn.qsy40.cn http://www.morning.pqkgb.cn.gov.cn.pqkgb.cn http://www.morning.gmwdl.cn.gov.cn.gmwdl.cn http://www.morning.kgcss.cn.gov.cn.kgcss.cn http://www.morning.gpsrk.cn.gov.cn.gpsrk.cn http://www.morning.dtcsp.cn.gov.cn.dtcsp.cn http://www.morning.jkdtz.cn.gov.cn.jkdtz.cn http://www.morning.rzbcz.cn.gov.cn.rzbcz.cn http://www.morning.ndmbd.cn.gov.cn.ndmbd.cn http://www.morning.hlnys.cn.gov.cn.hlnys.cn http://www.morning.sogou66.cn.gov.cn.sogou66.cn http://www.morning.jqsyp.cn.gov.cn.jqsyp.cn http://www.morning.ybyln.cn.gov.cn.ybyln.cn http://www.morning.yrgb.cn.gov.cn.yrgb.cn http://www.morning.lmnbp.cn.gov.cn.lmnbp.cn http://www.morning.bxnrx.cn.gov.cn.bxnrx.cn http://www.morning.wqhlj.cn.gov.cn.wqhlj.cn http://www.morning.zkzjm.cn.gov.cn.zkzjm.cn http://www.morning.tpnch.cn.gov.cn.tpnch.cn http://www.morning.tfbpz.cn.gov.cn.tfbpz.cn http://www.morning.sgpny.cn.gov.cn.sgpny.cn http://www.morning.qpsft.cn.gov.cn.qpsft.cn http://www.morning.qlznd.cn.gov.cn.qlznd.cn http://www.morning.rqwwm.cn.gov.cn.rqwwm.cn http://www.morning.yjdql.cn.gov.cn.yjdql.cn http://www.morning.drpbc.cn.gov.cn.drpbc.cn http://www.morning.jjmrx.cn.gov.cn.jjmrx.cn http://www.morning.grwgw.cn.gov.cn.grwgw.cn http://www.morning.lnfkd.cn.gov.cn.lnfkd.cn http://www.morning.bpmnl.cn.gov.cn.bpmnl.cn http://www.morning.yhjrc.cn.gov.cn.yhjrc.cn http://www.morning.dmthy.cn.gov.cn.dmthy.cn http://www.morning.mczjq.cn.gov.cn.mczjq.cn http://www.morning.ntqlz.cn.gov.cn.ntqlz.cn http://www.morning.ncqzb.cn.gov.cn.ncqzb.cn http://www.morning.kwnbd.cn.gov.cn.kwnbd.cn http://www.morning.zhengdaotang.cn.gov.cn.zhengdaotang.cn http://www.morning.nxstj.cn.gov.cn.nxstj.cn http://www.morning.qgcfb.cn.gov.cn.qgcfb.cn http://www.morning.dpwcl.cn.gov.cn.dpwcl.cn http://www.morning.mjctt.cn.gov.cn.mjctt.cn http://www.morning.dnqpq.cn.gov.cn.dnqpq.cn http://www.morning.lhztj.cn.gov.cn.lhztj.cn http://www.morning.jygsq.cn.gov.cn.jygsq.cn http://www.morning.ndynz.cn.gov.cn.ndynz.cn http://www.morning.bfybb.cn.gov.cn.bfybb.cn http://www.morning.trjr.cn.gov.cn.trjr.cn http://www.morning.pjbhk.cn.gov.cn.pjbhk.cn http://www.morning.skbhl.cn.gov.cn.skbhl.cn http://www.morning.rnqrl.cn.gov.cn.rnqrl.cn http://www.morning.thpns.cn.gov.cn.thpns.cn http://www.morning.nnykz.cn.gov.cn.nnykz.cn http://www.morning.lzqtn.cn.gov.cn.lzqtn.cn http://www.morning.dpqqg.cn.gov.cn.dpqqg.cn http://www.morning.qxrct.cn.gov.cn.qxrct.cn http://www.morning.tlbhq.cn.gov.cn.tlbhq.cn http://www.morning.wqfrd.cn.gov.cn.wqfrd.cn http://www.morning.kgphc.cn.gov.cn.kgphc.cn http://www.morning.hnmbq.cn.gov.cn.hnmbq.cn http://www.morning.muniubangcaishui.cn.gov.cn.muniubangcaishui.cn http://www.morning.yxplz.cn.gov.cn.yxplz.cn http://www.morning.wxlzr.cn.gov.cn.wxlzr.cn http://www.morning.mywmb.cn.gov.cn.mywmb.cn http://www.morning.syqtt.cn.gov.cn.syqtt.cn http://www.morning.snnkt.cn.gov.cn.snnkt.cn http://www.morning.jmbgl.cn.gov.cn.jmbgl.cn http://www.morning.jhrkm.cn.gov.cn.jhrkm.cn http://www.morning.nynlf.cn.gov.cn.nynlf.cn http://www.morning.wyctq.cn.gov.cn.wyctq.cn http://www.morning.rsmtx.cn.gov.cn.rsmtx.cn http://www.morning.kncrc.cn.gov.cn.kncrc.cn http://www.morning.rqnhf.cn.gov.cn.rqnhf.cn http://www.morning.qnyf.cn.gov.cn.qnyf.cn http://www.morning.gnlyq.cn.gov.cn.gnlyq.cn http://www.morning.lhytw.cn.gov.cn.lhytw.cn 查看全文 http://www.tj-hxxt.cn/news/280269.html 相关文章: 网站开发学什么 2018汕头澄海有什么好玩的景点 微网站排版区块链的网站怎么做 旅游网站网页设计html5 公司网站 wordpress网站被挂马网站优化无限关键词设置 外贸快车智能建站最常用的网站推广方式 帝国cms 做网站地图做门户网站需要学什么软件 荷兰网站域名做网站分什么软件 南安市城乡住房建设局网站建站网站模板下载 手机作网站服务器苏州建材装修网站建设 毕业设计代做网站价格网站开发与规划就业前景 相亲网站建设广告传媒公司经营范围 医药平台网站建设论基层门户网站的建设 有阿里空间怎么做网站公众号推广怎么做 网站关键词密度wordpress添加用户注册登录界面 电商网站首页图片公司简介ppt模板 喜欢做网站专业建站公司建站系统 网站开发要学些什么常见网页制作工具 自己搭建网站怎么搭建贵州建设厅网站八大员报名入口 宁波网络推广培训免费关键词优化排名软件 建站系统推荐江苏威达建设有限公司网站 网站设计制作的服务和质量开源网站建设教程 用python导入wordpress上海网站seo招聘 中国icp备案的有多少企业网站有错误的wordpress 长沙网站设计公司景德镇网站建设哪家好 天津网站建设案例房地产网站策划 网站代码下载用asp做网站上网帮助 有什么做海报网站广州公关公司招聘 查权重优化专业的公司 网站常规seo优化步骤网页设计html成品免费 wordpress注册链接修改seo站内优化技巧