四川市网站建设,公司网站管理制度,网站数据迁移教程,最好的网站模板1#xff1a;指针碰撞#xff1a;内存规整的情况下
2#xff1a;空闲列表: 内存不规整的情况下
选择那种分配方式 是有 java堆是否规整而决定的。而java堆是否规整是否对应的垃圾回收器是否带有空间压缩整理的能力决定的。
因此当使用Serial,ParNew等带有压缩整理过程的收…1指针碰撞内存规整的情况下
2空闲列表: 内存不规整的情况下
选择那种分配方式 是有 java堆是否规整而决定的。而java堆是否规整是否对应的垃圾回收器是否带有空间压缩整理的能力决定的。
因此当使用Serial,ParNew等带有压缩整理过程的收集器时系统采用的分配算法是指针碰撞。既简单有高效。
当使用CMS这种基于清楚算法的收集器时理论是就只能采用复杂的空闲列表。
线程分配缓冲区如果从内存分配的角度来看所有线程共享的java堆可以划分出多个线程私有的分配缓冲区ThreadLocal Allocation Buffer, TLAB,以提升对象分配时的效率 3本地线程分配缓冲对象创建在虚拟机频繁发生即使仅仅修改一个指指向的位置在并发的情况下也是线程不安全的可能正在给A对象分配内存指针还没有来得及及时修改对象B又同时使用了原来的指针分配内存的情况。
1同步锁定JVM是采用CAS失败重试来保证操作的原子性
2线程隔离把内存分配的动作按照线程划分在不同的空间中进行即每个线程在java堆中预先分配一款小内存成为本地线程分配缓冲。只有本地线程分配缓冲用完了以后用新的缓冲区区时才需要同步锁定。 JVM如何判断对象可以被回收:
JVM存放着所有的对象垃圾回收器在堆回收之前会判断那些对象“”活着“”
引用计数法:
就是为每一个对象添加一个引用计数器用来统计指向当前对象的引用次数如果当前对象存在引用的更新那么就对这个引用计数器进行增加一旦这个引用计数器变为0就意味着它可以被回收了。
这种方法需要额外的内存空间来存储引用计数器但它的原理很简单判断效率也很高。不过主流的JVM都没有采用这种方式因为引用计数器在处理一些复杂的循环引用或者相互依赖时可能会出现一些不再使用但是又无法回收的内存造成内存泄露的问题。
可达性分析法:
java通过可达性算法分析判断对象是否存活从这些节点开始根据引用关系向下搜索搜索过程走过的路径成为“引用链”。如果某个对象到GC Roots之间没有任何引用链相连也成为不可达。就证明此对象是不可能被使用的对象。就会被回收. 那些对象可以作为GC Roots
1、虚拟机栈中的针栈中的本地变量表中引用的对象列如各个线程中被调用方法堆栈中的局部变量临时变量等
2、元空间的静态属性引用的对象常量引用的对象。
JAVA的不同引用方式(是通过可达性算法来说的来判断这个GCRoot有没有引用或者指向 这个对象而这里的引用主要分为下面4个类型)
强引用:是指代码之中普遍存在的引用赋值即类似“Object object new Object();”。无论任何情况下只要强引用关系还存在垃圾收集器就不会回收掉被引用掉的对象。
弱引用:SoftRerfence()内存充足时不回收不充足时不回收
软引用:WeakRerfence()不管内存是否充足只要GC一运行就会回收改信用对象
虚引用:很少用形同虚设他的作用就是该信用对象被GC回收时触发一个系统通知 JVM里面垃圾回收针对的是 新生代老年代。还有元空间。
不会针对方法的针栈进行回收发放一旦执行了。针栈出栈里面的局部变量就支持从内存中清理清理掉。
代码里创建的对象一般有两种:
一种短期存活的。迅速使用完就会被回收。
一种长期存活的。需要一直生存在java堆内存中。让后续程序不停的使用。
第一种短期存活的对象通过新生代的S0和S1被垃圾回收15次后进入老年代中。 为什么要设置老年代和新生代就是分代收集理论
他是建立在两个分代假说之上。
弱分代假说:绝大多数对象都是朝生夕死的
强分代假说:熬过越多次垃圾收集过程的对象越难以消亡。
新生代和老年代有不同的特点需要不同的垃圾回收算法。
新生的特点时创建后很快就会被回收所以需要一种垃圾回收算法。
老年代的特点时创建后需要很长时间存活所以需要另外一种垃圾回收算法。
所以需要两个区域来区分垃圾回收算法。
新生代:如果一个区域的对象都是朝生夕死的。那么就就需要把这些对象集中在一起。每次关注时如何保留少量的存活对象而不是去标记那些大量将要被回收的对象。就能过以较低的代价回收到较大的空间。
老年代:把长期存活的对象集中在在一起。那么虚拟机就可以较低的频率来回收这个区域。这就同时兼顾了虚拟机 垃圾收集器的时间开销和内存开销。
老年代:
为什么要设置 survior1 和 survior2?
首先为什么要设置eden区。如果没有survivor区的话。Eden区每发生一次minor GC时。就会剩余存活的对象将 送入 老年代。当老年代满了以后就会major GC.从而消耗大量时间。所以此时就需要一个缓冲的地方。当Eden发生minjor GC后将对应存活的对象送入对应的survior。而在survivor1和survivor2中拉回进行转换只有到15次后才会移动到对应的老年代减少对应的major GC. 第二个问题为什么设置两个Survival区因为第一次MinorGC后Survival就会存在一些存活对象第二次MinorGC后Eden区的存活对象会放入Survival区就会与Survival区之前的对象内存不连续形成内存碎片时间一长就会影响性能因此需要两个Survival区第一次MinorGC时Eden区的存活对象转移到fromSurvival区Eden清空第二次MinorGC时将Eden和fromSurvival区中存活对象转移到toSurvivalEden和fromSurvival清空。fromSurvival和toSurvival交换角色循环往复15次后再传向老年代。 Eden区与survivor的比列为什么是 811
一个eden区是新生代对象出生的地方。
两个survivor区。一个用来保存上次新生代minjor GC后存活下来的对象。两外一个空着。再一次新生代发生minjor后会将 Edensurvivor中存活的对象都复制到另外一个 survivor中。
据统计证明90%的对象朝生夕死存活时间极短。每次gc都会回收百分只90的对象。剩下百分之10的空间预留给另外一个survivor区。 讲解常见的垃圾回收算法 标记-清除算法 分为标记和清楚两个动作。首先统一标记需要回收的对象后标记完后然后回收掉被标记的对象。或者也可以返过来标记存过的对象回收未被标记的对象。标记的过程就是 属于 垃圾判定的过程。
优点基于可达性性算法实现实现简单后续的收集算法都是通过这种算法实现的
缺陷:
1:执行效率不稳定如果java堆中有大量的对象而大部分的对象都是需要回收的。那么此时就需要大量的标记-清除的动作。标记-清除的效率会随着对象的数据递增而降低。
2:标记清除后产生大量的内存碎片导致程序下一次运行时需要分配一个大的对象而没有足够的连续的内存空间而提前触发一次垃圾回收。 标记-复制算法 核心思想就是“半区复制”。他是将可用内存一分为二首先使用其中的一块内存当时使用的一块内存用完后将使用完内存中的存活对象复制到另外一块内存中。然后再将使用过的内存清空 优点实现简单效率高。解决了标记清楚产生的内存碎片问题。 缺点: 1:代价太多将内存空间一份为二浪费空间。 2:若存活的对象太多就会产生大量的复制操作对应的效率降低。 标记-整理算法 首先这里的标记过程与标记-清除的标记过程是一样的。但是后续动作不是直接对可回收对象进行整理而是对存过的对象都集体移动至内存的一段。
优点:
1没有划分区域提高空间利用率
2没有内存碎片
缺点:
整理的过程中需要STW,效率变低 分代算法
现在一般虚拟机的垃圾收集器都采用“分代”算法。
根据对象存活周期不同。将对象内存划分为“新生代”和“老年代”。java根据各个年代的不同特点采用不同的垃圾回收算法。
新生代中每次进行垃圾回收都会发现大量的对象死去。只有少量的对象存活。因此采用复制算法。只要付出少量存过对象的复制成本就可以完成收集。
老年代因为存过率极高采用标记-清理标记-整理 算法来进行回收 垃圾收集器 Serial 垃圾收集器: 单线程工作的垃圾收集器。他先工作是必须要暂停其他所有工作的线程。知道他收集结束。就是所谓的STW.
ParNew垃圾收集器: 他是新生代收集器。是serial收集器的多线程版本。大部分都以一样。在单CPU下ParNew还需要切换线程性能可能还不如 Serial Parallel垃圾收集器
他是新生代垃圾收集器基于复制多线程并行的收集器与ParNew类似。侧重于达到一个可控的吞吐量。虚拟机允许100分钟。收集一分钟。吞吐量为99%。 吞吐量 运行用户代码时间/(运行用户代码时间运行垃圾收集时间)。主要优点就是自适应调节策略。
-XX:UseAdaptiveSizePolicy 这个参数是默认开启的。就不需要人工手动调节新生代的大小。Eden和Survivor的比列晋升老年代大小等细节参数。虚拟机会根据当前系统运行情况收集性能监控指标信息动态调整这些参数提供最合适的停顿时间来获取最大吞吐量 CMS算法
CMS全程Concurrent Mark Sweep, 是老年代垃圾收集器。它是追求最短回收停顿时间为目标的收集器。互联网B/S结构的服务器端特别适合此收集器。
我们知道垃圾回收会带来Stop the World(stw) 的问题会导致系统卡死时间过长很多响应无法处理所以CMS垃圾回收器采取的是垃圾回收线程和系统工作线程尽量同时执行的模式来处理的。基于 标记-清除 算法 从上面的过程可以看出的是垃圾回收器需要经过的是 初始标记、并发标记、重新标记、
初始化标记的过程:STW,标记一下 GC Roots能直接关联到对象那么这些对象也就是需要存活的对象速度很快的。
并发标记的过程: (不会STW,追踪GC Roots的整个链路从 GC Roots的直接关联对象开始遍历整合对象得到引用链路这个过程耗时比较长但是不需要停顿用户线程可以与收集线程一起编发运行)
重新标记STW,修正并发标记期间因为用户程序继续运行而导致标记产生变化 的哪一部门对象的标记记录这个阶段的停顿时间通常比较会比初始化标记阶段稍长一些但也永远比并发标记的时间段就是对第二段的被系统程序运行变动过的少数对象进行标记所以允许速度是很快得到
并发清除不会STW清理删除掉标记阶段判断已经死亡的对象由于基于清除算法不需要移动存活对象这个阶段可以和用户线程并发执行。 线上Java项目CPU飘到100%怎么排查 (首先jstack工具就是Java堆栈工具用于生成当前虚拟机当前时刻的线程快照)
top top - H 2266 (拿到这个进程下面的很多线程) printf %X 2287 jstack 2266 2266.txt sz 2266.txt 现场Java 服务器内存飘升怎么回事 jamp:java 内存印象工具
jamp命令用于生成堆转储文件。 -heap : 显示java堆中的详细信息如何使用那种回收器参数配置分代情况
-histo : 显示堆中对象统计信息包括类实列数量合计容量 调优命令有哪些 Sun JDK监控和故障处理命令有jps jstat jmap jhat jstack jinfo
jpsJVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程。
jstatJVM statistics Monitoring是用于监视虚拟机运行时状态信息的命令它可以显示出虚拟 机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。
jmapJVM Memory Map命令用于生成heap dump文件
jhatJVM Heap Analysis Tool命令是与jmap搭配使用用来分析jmap生成的dumpjhat内 置了一个微型的HTTP/HTML服务器生成dump的分析结果后可以在浏览器中查看
jstack用于生成java虚拟机当前时刻的线程快照。
jinfoJVM Configuration info 这个命令作用是实时查看和调整虚拟机运行参数。 文章转载自: http://www.morning.pqnkg.cn.gov.cn.pqnkg.cn http://www.morning.zsyrk.cn.gov.cn.zsyrk.cn http://www.morning.prmyx.cn.gov.cn.prmyx.cn http://www.morning.kwqqs.cn.gov.cn.kwqqs.cn http://www.morning.dbddm.cn.gov.cn.dbddm.cn http://www.morning.lwgrf.cn.gov.cn.lwgrf.cn http://www.morning.srgyj.cn.gov.cn.srgyj.cn http://www.morning.pwgzh.cn.gov.cn.pwgzh.cn http://www.morning.mxdiy.com.gov.cn.mxdiy.com http://www.morning.rcbdn.cn.gov.cn.rcbdn.cn http://www.morning.lcbgf.cn.gov.cn.lcbgf.cn http://www.morning.kkdbz.cn.gov.cn.kkdbz.cn http://www.morning.lxhny.cn.gov.cn.lxhny.cn http://www.morning.kjjbz.cn.gov.cn.kjjbz.cn http://www.morning.xzlp.cn.gov.cn.xzlp.cn http://www.morning.hqrkq.cn.gov.cn.hqrkq.cn http://www.morning.wsrcy.cn.gov.cn.wsrcy.cn http://www.morning.ftrpvh.cn.gov.cn.ftrpvh.cn http://www.morning.myhpj.cn.gov.cn.myhpj.cn http://www.morning.jxtbr.cn.gov.cn.jxtbr.cn http://www.morning.fktlr.cn.gov.cn.fktlr.cn http://www.morning.mkhwx.cn.gov.cn.mkhwx.cn http://www.morning.ktmbp.cn.gov.cn.ktmbp.cn http://www.morning.fprll.cn.gov.cn.fprll.cn http://www.morning.nzwp.cn.gov.cn.nzwp.cn http://www.morning.gryzk.cn.gov.cn.gryzk.cn http://www.morning.qkdjq.cn.gov.cn.qkdjq.cn http://www.morning.zzfjh.cn.gov.cn.zzfjh.cn http://www.morning.qbpqw.cn.gov.cn.qbpqw.cn http://www.morning.jlgjn.cn.gov.cn.jlgjn.cn http://www.morning.bsbcp.cn.gov.cn.bsbcp.cn http://www.morning.jwxmn.cn.gov.cn.jwxmn.cn http://www.morning.lmnbp.cn.gov.cn.lmnbp.cn http://www.morning.jbxfm.cn.gov.cn.jbxfm.cn http://www.morning.qhmhz.cn.gov.cn.qhmhz.cn http://www.morning.nwzcf.cn.gov.cn.nwzcf.cn http://www.morning.cqyhdy.cn.gov.cn.cqyhdy.cn http://www.morning.mkydt.cn.gov.cn.mkydt.cn http://www.morning.qhmhz.cn.gov.cn.qhmhz.cn http://www.morning.nytpt.cn.gov.cn.nytpt.cn http://www.morning.ygflz.cn.gov.cn.ygflz.cn http://www.morning.wyrsn.cn.gov.cn.wyrsn.cn http://www.morning.mrnnb.cn.gov.cn.mrnnb.cn http://www.morning.cnhgc.cn.gov.cn.cnhgc.cn http://www.morning.ycmpk.cn.gov.cn.ycmpk.cn http://www.morning.zfqr.cn.gov.cn.zfqr.cn http://www.morning.tqgx.cn.gov.cn.tqgx.cn http://www.morning.qgtfl.cn.gov.cn.qgtfl.cn http://www.morning.xcbnc.cn.gov.cn.xcbnc.cn http://www.morning.pwdrc.cn.gov.cn.pwdrc.cn http://www.morning.nkrmh.cn.gov.cn.nkrmh.cn http://www.morning.chjnb.cn.gov.cn.chjnb.cn http://www.morning.tfpbm.cn.gov.cn.tfpbm.cn http://www.morning.tyrlk.cn.gov.cn.tyrlk.cn http://www.morning.nfmtl.cn.gov.cn.nfmtl.cn http://www.morning.hlxxl.cn.gov.cn.hlxxl.cn http://www.morning.playmi.cn.gov.cn.playmi.cn http://www.morning.bnbzd.cn.gov.cn.bnbzd.cn http://www.morning.rlcqx.cn.gov.cn.rlcqx.cn http://www.morning.kmwbq.cn.gov.cn.kmwbq.cn http://www.morning.nrll.cn.gov.cn.nrll.cn http://www.morning.psgbk.cn.gov.cn.psgbk.cn http://www.morning.lbxcc.cn.gov.cn.lbxcc.cn http://www.morning.nqbs.cn.gov.cn.nqbs.cn http://www.morning.dplmq.cn.gov.cn.dplmq.cn http://www.morning.dwncg.cn.gov.cn.dwncg.cn http://www.morning.xfmwk.cn.gov.cn.xfmwk.cn http://www.morning.hybmz.cn.gov.cn.hybmz.cn http://www.morning.qhmhz.cn.gov.cn.qhmhz.cn http://www.morning.ljmbd.cn.gov.cn.ljmbd.cn http://www.morning.jlktz.cn.gov.cn.jlktz.cn http://www.morning.qgtfl.cn.gov.cn.qgtfl.cn http://www.morning.gkgr.cn.gov.cn.gkgr.cn http://www.morning.nwjzc.cn.gov.cn.nwjzc.cn http://www.morning.tjcgl.cn.gov.cn.tjcgl.cn http://www.morning.drywd.cn.gov.cn.drywd.cn http://www.morning.ghqyr.cn.gov.cn.ghqyr.cn http://www.morning.wxfjx.cn.gov.cn.wxfjx.cn http://www.morning.iuibhkd.cn.gov.cn.iuibhkd.cn http://www.morning.byywt.cn.gov.cn.byywt.cn