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

网站织梦程序改成wordpress建设部或国土资源管理局的网站

网站织梦程序改成wordpress,建设部或国土资源管理局的网站,虚拟机可以做多个网站,东莞网站建设 模具如何判断堆区中的对象可以被回收了 在Java中#xff0c;垃圾回收机制会帮助我们自动回收不再被使用的对象#xff0c;已到达即使释放内存的效果#xff0c;但是Java又是怎么知道哪些对象不会再被我们继续使用了呢#xff0c;希望你通过本篇文章#xff0c;理解引用计数法与…如何判断堆区中的对象可以被回收了 在Java中垃圾回收机制会帮助我们自动回收不再被使用的对象已到达即使释放内存的效果但是Java又是怎么知道哪些对象不会再被我们继续使用了呢希望你通过本篇文章理解引用计数法与可达性分析法的运行方式 垃圾回收机制 在C/C中一个对象如果不再使用就要手动将其释放掉但是很多程序员在编写程序的时候经常忘记将一些对象回收从而就导致了内存泄漏 在Java中为了简化对象的内存释放引入了自动的垃圾回收机制通过垃圾回收器把不再使用的对象完成自动回收垃圾回收器主要负责堆上的内存回收那么垃圾回收器又是如何知道哪些对象可以被回收了呢 在Java中一个对象是否可以被回收主要是看这个对象是否被引用如果对象被引用了说明对象还在使用是不可以被回收的比如说如下代码中堆内存中的Demo对象被demo引用那么堆中的Demo对象就不会被回收 public class Demo {public static void main(String[] args) {Demo demo new Demo();} }#mermaid-svg-3blitlT7sFSSKo6M {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3blitlT7sFSSKo6M .error-icon{fill:#552222;}#mermaid-svg-3blitlT7sFSSKo6M .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-3blitlT7sFSSKo6M .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-3blitlT7sFSSKo6M .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-3blitlT7sFSSKo6M .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-3blitlT7sFSSKo6M .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-3blitlT7sFSSKo6M .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-3blitlT7sFSSKo6M .marker{fill:#333333;stroke:#333333;}#mermaid-svg-3blitlT7sFSSKo6M .marker.cross{stroke:#333333;}#mermaid-svg-3blitlT7sFSSKo6M svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-3blitlT7sFSSKo6M .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-3blitlT7sFSSKo6M .cluster-label text{fill:#333;}#mermaid-svg-3blitlT7sFSSKo6M .cluster-label span{color:#333;}#mermaid-svg-3blitlT7sFSSKo6M .label text,#mermaid-svg-3blitlT7sFSSKo6M span{fill:#333;color:#333;}#mermaid-svg-3blitlT7sFSSKo6M .node rect,#mermaid-svg-3blitlT7sFSSKo6M .node circle,#mermaid-svg-3blitlT7sFSSKo6M .node ellipse,#mermaid-svg-3blitlT7sFSSKo6M .node polygon,#mermaid-svg-3blitlT7sFSSKo6M .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-3blitlT7sFSSKo6M .node .label{text-align:center;}#mermaid-svg-3blitlT7sFSSKo6M .node.clickable{cursor:pointer;}#mermaid-svg-3blitlT7sFSSKo6M .arrowheadPath{fill:#333333;}#mermaid-svg-3blitlT7sFSSKo6M .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-3blitlT7sFSSKo6M .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-3blitlT7sFSSKo6M .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-3blitlT7sFSSKo6M .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-3blitlT7sFSSKo6M .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-3blitlT7sFSSKo6M .cluster text{fill:#333;}#mermaid-svg-3blitlT7sFSSKo6M .cluster span{color:#333;}#mermaid-svg-3blitlT7sFSSKo6M div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-3blitlT7sFSSKo6M :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-3blitlT7sFSSKo6M .yellowBox*{fill:#ffffe0!important;stroke:#000!important;stroke-width:2px!important;}#mermaid-svg-3blitlT7sFSSKo6M .yellowBox span{fill:#ffffe0!important;stroke:#000!important;stroke-width:2px!important;} 栈内存 堆内存 main的栈帧 demo 引用 Demo对象 若此时将demo的引用设置为null demo null;那么此时Demo对象就处于了没有被引用的状态 #mermaid-svg-32TDQTbaexBXlgdo {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-32TDQTbaexBXlgdo .error-icon{fill:#552222;}#mermaid-svg-32TDQTbaexBXlgdo .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-32TDQTbaexBXlgdo .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-32TDQTbaexBXlgdo .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-32TDQTbaexBXlgdo .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-32TDQTbaexBXlgdo .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-32TDQTbaexBXlgdo .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-32TDQTbaexBXlgdo .marker{fill:#333333;stroke:#333333;}#mermaid-svg-32TDQTbaexBXlgdo .marker.cross{stroke:#333333;}#mermaid-svg-32TDQTbaexBXlgdo svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-32TDQTbaexBXlgdo .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-32TDQTbaexBXlgdo .cluster-label text{fill:#333;}#mermaid-svg-32TDQTbaexBXlgdo .cluster-label span{color:#333;}#mermaid-svg-32TDQTbaexBXlgdo .label text,#mermaid-svg-32TDQTbaexBXlgdo span{fill:#333;color:#333;}#mermaid-svg-32TDQTbaexBXlgdo .node rect,#mermaid-svg-32TDQTbaexBXlgdo .node circle,#mermaid-svg-32TDQTbaexBXlgdo .node ellipse,#mermaid-svg-32TDQTbaexBXlgdo .node polygon,#mermaid-svg-32TDQTbaexBXlgdo .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-32TDQTbaexBXlgdo .node .label{text-align:center;}#mermaid-svg-32TDQTbaexBXlgdo .node.clickable{cursor:pointer;}#mermaid-svg-32TDQTbaexBXlgdo .arrowheadPath{fill:#333333;}#mermaid-svg-32TDQTbaexBXlgdo .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-32TDQTbaexBXlgdo .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-32TDQTbaexBXlgdo .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-32TDQTbaexBXlgdo .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-32TDQTbaexBXlgdo .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-32TDQTbaexBXlgdo .cluster text{fill:#333;}#mermaid-svg-32TDQTbaexBXlgdo .cluster span{color:#333;}#mermaid-svg-32TDQTbaexBXlgdo div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-32TDQTbaexBXlgdo :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-32TDQTbaexBXlgdo .yellowBox*{fill:#ffffe0!important;stroke:#000!important;stroke-width:2px!important;}#mermaid-svg-32TDQTbaexBXlgdo .yellowBox span{fill:#ffffe0!important;stroke:#000!important;stroke-width:2px!important;} 栈内存 main的栈帧 demo 引用 堆内存 Demo对象 此时Demo会被垃圾回收器进行回收那么垃圾回收器又是怎么知道Demo对象目前没有被引用呢 引用计数法 引用计数法会为每一个对象维护一个引用计数器当对象被引用时加一取消引用时减一在上面的代码中demo引用了堆上的Demo对象所以Demo对象的引用计数器就加一当把demo赋值为null的时候也就是取消了Demo的引用此时Demo对象引用计数器将减一成为0此时垃圾回收器就认为Demo对象此时没有被任何引用可以回收 #mermaid-svg-fUHORRE90CM8s05b {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-fUHORRE90CM8s05b .error-icon{fill:#552222;}#mermaid-svg-fUHORRE90CM8s05b .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-fUHORRE90CM8s05b .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-fUHORRE90CM8s05b .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-fUHORRE90CM8s05b .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-fUHORRE90CM8s05b .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-fUHORRE90CM8s05b .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-fUHORRE90CM8s05b .marker{fill:#333333;stroke:#333333;}#mermaid-svg-fUHORRE90CM8s05b .marker.cross{stroke:#333333;}#mermaid-svg-fUHORRE90CM8s05b svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-fUHORRE90CM8s05b .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-fUHORRE90CM8s05b .cluster-label text{fill:#333;}#mermaid-svg-fUHORRE90CM8s05b .cluster-label span{color:#333;}#mermaid-svg-fUHORRE90CM8s05b .label text,#mermaid-svg-fUHORRE90CM8s05b span{fill:#333;color:#333;}#mermaid-svg-fUHORRE90CM8s05b .node rect,#mermaid-svg-fUHORRE90CM8s05b .node circle,#mermaid-svg-fUHORRE90CM8s05b .node ellipse,#mermaid-svg-fUHORRE90CM8s05b .node polygon,#mermaid-svg-fUHORRE90CM8s05b .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-fUHORRE90CM8s05b .node .label{text-align:center;}#mermaid-svg-fUHORRE90CM8s05b .node.clickable{cursor:pointer;}#mermaid-svg-fUHORRE90CM8s05b .arrowheadPath{fill:#333333;}#mermaid-svg-fUHORRE90CM8s05b .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-fUHORRE90CM8s05b .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-fUHORRE90CM8s05b .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-fUHORRE90CM8s05b .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-fUHORRE90CM8s05b .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-fUHORRE90CM8s05b .cluster text{fill:#333;}#mermaid-svg-fUHORRE90CM8s05b .cluster span{color:#333;}#mermaid-svg-fUHORRE90CM8s05b div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-fUHORRE90CM8s05b :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-fUHORRE90CM8s05b .yellowBox*{fill:#ffffe0!important;stroke:#000!important;stroke-width:2px!important;}#mermaid-svg-fUHORRE90CM8s05b .yellowBox span{fill:#ffffe0!important;stroke:#000!important;stroke-width:2px!important;} 栈内存 堆内存 main的栈帧 demo 引用 Demo对象 引用计数器:1 但是此时会出现一个问题如果我new了两个对象A与B并且A对象与B对象的互为彼此的成员变量那么就会出现循环引用的现象此时A对象被栈内存中的a1引用也被B对象中的a变量引用那么他的引用技术器应该为2 public class Demo {public static void main(String[] args) {A a1 new A();B b1 new B();a1.b b1;b1.a a1;} } class A {B b; } class B {A a; }#mermaid-svg-Gt4ZlzjQtAHGUypB {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Gt4ZlzjQtAHGUypB .error-icon{fill:#552222;}#mermaid-svg-Gt4ZlzjQtAHGUypB .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Gt4ZlzjQtAHGUypB .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-Gt4ZlzjQtAHGUypB .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Gt4ZlzjQtAHGUypB .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Gt4ZlzjQtAHGUypB .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Gt4ZlzjQtAHGUypB .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Gt4ZlzjQtAHGUypB .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Gt4ZlzjQtAHGUypB .marker.cross{stroke:#333333;}#mermaid-svg-Gt4ZlzjQtAHGUypB svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Gt4ZlzjQtAHGUypB .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Gt4ZlzjQtAHGUypB .cluster-label text{fill:#333;}#mermaid-svg-Gt4ZlzjQtAHGUypB .cluster-label span{color:#333;}#mermaid-svg-Gt4ZlzjQtAHGUypB .label text,#mermaid-svg-Gt4ZlzjQtAHGUypB span{fill:#333;color:#333;}#mermaid-svg-Gt4ZlzjQtAHGUypB .node rect,#mermaid-svg-Gt4ZlzjQtAHGUypB .node circle,#mermaid-svg-Gt4ZlzjQtAHGUypB .node ellipse,#mermaid-svg-Gt4ZlzjQtAHGUypB .node polygon,#mermaid-svg-Gt4ZlzjQtAHGUypB .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Gt4ZlzjQtAHGUypB .node .label{text-align:center;}#mermaid-svg-Gt4ZlzjQtAHGUypB .node.clickable{cursor:pointer;}#mermaid-svg-Gt4ZlzjQtAHGUypB .arrowheadPath{fill:#333333;}#mermaid-svg-Gt4ZlzjQtAHGUypB .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Gt4ZlzjQtAHGUypB .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Gt4ZlzjQtAHGUypB .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-Gt4ZlzjQtAHGUypB .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-Gt4ZlzjQtAHGUypB .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Gt4ZlzjQtAHGUypB .cluster text{fill:#333;}#mermaid-svg-Gt4ZlzjQtAHGUypB .cluster span{color:#333;}#mermaid-svg-Gt4ZlzjQtAHGUypB div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Gt4ZlzjQtAHGUypB :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-Gt4ZlzjQtAHGUypB .yellowBox*{fill:#ffffe0!important;stroke:#000!important;stroke-width:2px!important;}#mermaid-svg-Gt4ZlzjQtAHGUypB .yellowBox span{fill:#ffffe0!important;stroke:#000!important;stroke-width:2px!important;} 栈内存 堆内存 main的栈帧 A对象 B对象 a1 b1 a B计数器:2 b A计数器:2 那么此时我取消a1、b1对A与B的引用 a1 null; b1 null;我们已经无法在程序中获取到A与B对象了因为他们两个除了彼此间的引用关系已经没有任何引用能够找到他们所以按照常理来说A与B对象都不会在程序中再使用了理应被垃圾回收器进行回收但是又由于存在彼此间的引用关系引用计数器的值并不是0那么此时垃圾回收器又会认为A与B都存在被引用的关系所以并不会回收这两个类 #mermaid-svg-7Qkt9FF3W6Ocx23C {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-7Qkt9FF3W6Ocx23C .error-icon{fill:#552222;}#mermaid-svg-7Qkt9FF3W6Ocx23C .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-7Qkt9FF3W6Ocx23C .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-7Qkt9FF3W6Ocx23C .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-7Qkt9FF3W6Ocx23C .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-7Qkt9FF3W6Ocx23C .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-7Qkt9FF3W6Ocx23C .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-7Qkt9FF3W6Ocx23C .marker{fill:#333333;stroke:#333333;}#mermaid-svg-7Qkt9FF3W6Ocx23C .marker.cross{stroke:#333333;}#mermaid-svg-7Qkt9FF3W6Ocx23C svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-7Qkt9FF3W6Ocx23C .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-7Qkt9FF3W6Ocx23C .cluster-label text{fill:#333;}#mermaid-svg-7Qkt9FF3W6Ocx23C .cluster-label span{color:#333;}#mermaid-svg-7Qkt9FF3W6Ocx23C .label text,#mermaid-svg-7Qkt9FF3W6Ocx23C span{fill:#333;color:#333;}#mermaid-svg-7Qkt9FF3W6Ocx23C .node rect,#mermaid-svg-7Qkt9FF3W6Ocx23C .node circle,#mermaid-svg-7Qkt9FF3W6Ocx23C .node ellipse,#mermaid-svg-7Qkt9FF3W6Ocx23C .node polygon,#mermaid-svg-7Qkt9FF3W6Ocx23C .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-7Qkt9FF3W6Ocx23C .node .label{text-align:center;}#mermaid-svg-7Qkt9FF3W6Ocx23C .node.clickable{cursor:pointer;}#mermaid-svg-7Qkt9FF3W6Ocx23C .arrowheadPath{fill:#333333;}#mermaid-svg-7Qkt9FF3W6Ocx23C .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-7Qkt9FF3W6Ocx23C .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-7Qkt9FF3W6Ocx23C .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-7Qkt9FF3W6Ocx23C .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-7Qkt9FF3W6Ocx23C .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-7Qkt9FF3W6Ocx23C .cluster text{fill:#333;}#mermaid-svg-7Qkt9FF3W6Ocx23C .cluster span{color:#333;}#mermaid-svg-7Qkt9FF3W6Ocx23C div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-7Qkt9FF3W6Ocx23C :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-7Qkt9FF3W6Ocx23C .yellowBox*{fill:#ffffe0!important;stroke:#000!important;stroke-width:2px!important;}#mermaid-svg-7Qkt9FF3W6Ocx23C .yellowBox span{fill:#ffffe0!important;stroke:#000!important;stroke-width:2px!important;} 栈内存 main的栈帧 a1 b1 堆内存 A对象 B对象 b a A计数器:1 B计数器:1 那么这种情况显然是不对的无法回收的对象有可能会导致内存泄漏所以Java并没有使用这种方法来判断类是否应该被回收而是使用了另外一种方式 可达性分析法 Java使用的是可达性分析算法来判断对象是否可以被回收 可达性分析法将对象分为两类 垃圾回收根对象GC Root普通对象 对象与对象之间存在引用关系形成一个引用链 可达性分析算法就是指GC Root对象到某个对象间是可达的即从GC Root对象开始通过引用对象可以找到的对象爱国即认为该对象还不能被回收 #mermaid-svg-RQ2Fk2Slkux5A0gU {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-RQ2Fk2Slkux5A0gU .error-icon{fill:#552222;}#mermaid-svg-RQ2Fk2Slkux5A0gU .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-RQ2Fk2Slkux5A0gU .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-RQ2Fk2Slkux5A0gU .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-RQ2Fk2Slkux5A0gU .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-RQ2Fk2Slkux5A0gU .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-RQ2Fk2Slkux5A0gU .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-RQ2Fk2Slkux5A0gU .marker{fill:#333333;stroke:#333333;}#mermaid-svg-RQ2Fk2Slkux5A0gU .marker.cross{stroke:#333333;}#mermaid-svg-RQ2Fk2Slkux5A0gU svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-RQ2Fk2Slkux5A0gU .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-RQ2Fk2Slkux5A0gU .cluster-label text{fill:#333;}#mermaid-svg-RQ2Fk2Slkux5A0gU .cluster-label span{color:#333;}#mermaid-svg-RQ2Fk2Slkux5A0gU .label text,#mermaid-svg-RQ2Fk2Slkux5A0gU span{fill:#333;color:#333;}#mermaid-svg-RQ2Fk2Slkux5A0gU .node rect,#mermaid-svg-RQ2Fk2Slkux5A0gU .node circle,#mermaid-svg-RQ2Fk2Slkux5A0gU .node ellipse,#mermaid-svg-RQ2Fk2Slkux5A0gU .node polygon,#mermaid-svg-RQ2Fk2Slkux5A0gU .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-RQ2Fk2Slkux5A0gU .node .label{text-align:center;}#mermaid-svg-RQ2Fk2Slkux5A0gU .node.clickable{cursor:pointer;}#mermaid-svg-RQ2Fk2Slkux5A0gU .arrowheadPath{fill:#333333;}#mermaid-svg-RQ2Fk2Slkux5A0gU .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-RQ2Fk2Slkux5A0gU .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-RQ2Fk2Slkux5A0gU .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-RQ2Fk2Slkux5A0gU .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-RQ2Fk2Slkux5A0gU .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-RQ2Fk2Slkux5A0gU .cluster text{fill:#333;}#mermaid-svg-RQ2Fk2Slkux5A0gU .cluster span{color:#333;}#mermaid-svg-RQ2Fk2Slkux5A0gU div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-RQ2Fk2Slkux5A0gU :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-RQ2Fk2Slkux5A0gU .redBox*{fill:#ffcccb!important;stroke:#000!important;stroke-width:2px!important;}#mermaid-svg-RQ2Fk2Slkux5A0gU .redBox span{fill:#ffcccb!important;stroke:#000!important;stroke-width:2px!important;} GC Root对象 普通对象 对象A 对象B 对象C 对象D 此时B、C、D对象都可以通过引用被GC Root对象找到即他们都是可达的所以不会被视为可回收的对象但是如果对象A与对象B之间取消引用关系那么即使对象C与对象D任然存在引用关系但他们是不可达的因此他们会被回收 #mermaid-svg-GsL7ubimuK5BWXeA {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GsL7ubimuK5BWXeA .error-icon{fill:#552222;}#mermaid-svg-GsL7ubimuK5BWXeA .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-GsL7ubimuK5BWXeA .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-GsL7ubimuK5BWXeA .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-GsL7ubimuK5BWXeA .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-GsL7ubimuK5BWXeA .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-GsL7ubimuK5BWXeA .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-GsL7ubimuK5BWXeA .marker{fill:#333333;stroke:#333333;}#mermaid-svg-GsL7ubimuK5BWXeA .marker.cross{stroke:#333333;}#mermaid-svg-GsL7ubimuK5BWXeA svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-GsL7ubimuK5BWXeA .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-GsL7ubimuK5BWXeA .cluster-label text{fill:#333;}#mermaid-svg-GsL7ubimuK5BWXeA .cluster-label span{color:#333;}#mermaid-svg-GsL7ubimuK5BWXeA .label text,#mermaid-svg-GsL7ubimuK5BWXeA span{fill:#333;color:#333;}#mermaid-svg-GsL7ubimuK5BWXeA .node rect,#mermaid-svg-GsL7ubimuK5BWXeA .node circle,#mermaid-svg-GsL7ubimuK5BWXeA .node ellipse,#mermaid-svg-GsL7ubimuK5BWXeA .node polygon,#mermaid-svg-GsL7ubimuK5BWXeA .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-GsL7ubimuK5BWXeA .node .label{text-align:center;}#mermaid-svg-GsL7ubimuK5BWXeA .node.clickable{cursor:pointer;}#mermaid-svg-GsL7ubimuK5BWXeA .arrowheadPath{fill:#333333;}#mermaid-svg-GsL7ubimuK5BWXeA .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-GsL7ubimuK5BWXeA .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-GsL7ubimuK5BWXeA .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-GsL7ubimuK5BWXeA .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-GsL7ubimuK5BWXeA .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-GsL7ubimuK5BWXeA .cluster text{fill:#333;}#mermaid-svg-GsL7ubimuK5BWXeA .cluster span{color:#333;}#mermaid-svg-GsL7ubimuK5BWXeA div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-GsL7ubimuK5BWXeA :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-GsL7ubimuK5BWXeA .redBox*{fill:#ffcccb!important;stroke:#000!important;stroke-width:2px!important;}#mermaid-svg-GsL7ubimuK5BWXeA .redBox span{fill:#ffcccb!important;stroke:#000!important;stroke-width:2px!important;} GC Root对象 对象A 普通对象 对象B 对象C 对象D Java虚拟机会持有一个所有GC Root对象的列表用来判断哪些对象是不可达的不可达的对象将被垃圾回收器进行回收 再次回看上面的案例如果使用可达性分析法那么堆内存中应该存在一个GC Root对象引用了主线程里面mian方法的栈帧中的对象此时如果a1与b1不再引用堆中的对象那么就算A对象与B对象存在引用关系但是他们是不可达的就会被视为等待回收的对象 #mermaid-svg-Q12TUKsPioYrNsGl {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Q12TUKsPioYrNsGl .error-icon{fill:#552222;}#mermaid-svg-Q12TUKsPioYrNsGl .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Q12TUKsPioYrNsGl .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-Q12TUKsPioYrNsGl .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Q12TUKsPioYrNsGl .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Q12TUKsPioYrNsGl .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Q12TUKsPioYrNsGl .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Q12TUKsPioYrNsGl .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Q12TUKsPioYrNsGl .marker.cross{stroke:#333333;}#mermaid-svg-Q12TUKsPioYrNsGl svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Q12TUKsPioYrNsGl .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Q12TUKsPioYrNsGl .cluster-label text{fill:#333;}#mermaid-svg-Q12TUKsPioYrNsGl .cluster-label span{color:#333;}#mermaid-svg-Q12TUKsPioYrNsGl .label text,#mermaid-svg-Q12TUKsPioYrNsGl span{fill:#333;color:#333;}#mermaid-svg-Q12TUKsPioYrNsGl .node rect,#mermaid-svg-Q12TUKsPioYrNsGl .node circle,#mermaid-svg-Q12TUKsPioYrNsGl .node ellipse,#mermaid-svg-Q12TUKsPioYrNsGl .node polygon,#mermaid-svg-Q12TUKsPioYrNsGl .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Q12TUKsPioYrNsGl .node .label{text-align:center;}#mermaid-svg-Q12TUKsPioYrNsGl .node.clickable{cursor:pointer;}#mermaid-svg-Q12TUKsPioYrNsGl .arrowheadPath{fill:#333333;}#mermaid-svg-Q12TUKsPioYrNsGl .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Q12TUKsPioYrNsGl .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Q12TUKsPioYrNsGl .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-Q12TUKsPioYrNsGl .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-Q12TUKsPioYrNsGl .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Q12TUKsPioYrNsGl .cluster text{fill:#333;}#mermaid-svg-Q12TUKsPioYrNsGl .cluster span{color:#333;}#mermaid-svg-Q12TUKsPioYrNsGl div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Q12TUKsPioYrNsGl :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-Q12TUKsPioYrNsGl .yellowBox*{fill:#ffffe0!important;stroke:#000!important;stroke-width:2px!important;}#mermaid-svg-Q12TUKsPioYrNsGl .yellowBox span{fill:#ffffe0!important;stroke:#000!important;stroke-width:2px!important;}#mermaid-svg-Q12TUKsPioYrNsGl .redBox*{fill:#ffcccb!important;stroke:#000!important;stroke-width:2px!important;}#mermaid-svg-Q12TUKsPioYrNsGl .redBox span{fill:#ffcccb!important;stroke:#000!important;stroke-width:2px!important;} 堆内存 A对象 B对象 栈内存 main的栈帧 a1 b1 GC-Root对象 a b 那么哪些对象可以被当中GC Root对象呢 主要有四种GC Root对象 线程Thread对象 引用线程栈帧中的方法、参数、局部变量等等上面我们的案例中就是线程Thread对象引用了mian方法栈帧中的a1与b1类加载器加载到的java.lang.Class对象 引用类中的静态变量监视器对象 用来保存同步锁synchronized关键字持有的对象本地方法方法调用时使用的全局对象 由Java虚拟机来控制调用 感谢您的阅读文章到这里就结束了如有错误敬请指出。 如果对你有帮助请点一个关注希望能再次见到您
http://www.hkea.cn/news/14277767/

相关文章:

  • 自己 做网站wordpress超精简主题
  • 我的世界做图片网站网站建立风格
  • 学做饼干网站网站开发技术难度
  • 山西大同网站建设物流信息网站有哪些
  • 云图书馆平台网站建设方案哪里做网站百度收录块
  • 有公网ip 建网站如何查看vs中建设好的网站
  • 产品展示类网站源码免费注册网页的网站
  • 单位网站建设方案焦作建设企业网站公司
  • 企业网站设计优化公司有道 wordpress
  • seo综合查询站长工具网站平台建设属于什么采购
  • 网站建设前景如何内蒙古住房和城乡建设厅网站 工程建设管理
  • 网站开发计划表网站换域名了怎么办
  • 信息展示网站上海公布最新情况
  • 建设信用卡购物网站网络销售平台推广
  • 网站维护中是怎么回事网站开发是什么环境
  • 在哪里可以学习做网站设计网站建设
  • 太原网站建设加q.479185700各个国家的google网站
  • 营销网站的主题 定位 修改建议网站建设sz886
  • 免费个人主页网站洛阳宣传片制作公司
  • 做酸菜视频网站网络营销包括的主要内容有
  • 宁波住房与城乡建设部网站长沙长沙建设网站
  • 网络营销首先要外贸网站推广seo
  • 正规的招聘网站做一手房用什么网站好
  • 南京网站设计网站网站重复
  • ps网站CAD做PS地砖贴图在线建站
  • 信用网站一体化建设软件定制开发推荐
  • 做网站的分工dashicon wordpress
  • 网站建设需多少钱免费下载精神文明建设宣传网站
  • php教育学校网站源码辽阳市城市建设档案馆网站
  • 沈阳微信网站网站哪里备案