当前位置: 首页 > news >正文 网站建设费属于文化事业建设费餐饮公司网站建设的特点 news 2025/11/1 17:19:11 网站建设费属于文化事业建设费,餐饮公司网站建设的特点,广州专业的网站制作,求网站2021在线观看#x1f4aa;、JVM 目录#x1f4aa;、JVM1、说一下JVM的主要组成部分及其作用2、什么是JVM内存结构#xff08;谈谈对运行时数据区的理解#xff09;3、堆和栈的区别是什么4、堆中存什么#xff1f;栈中存什么#xff1f;5、为什么不把基本类型放堆中呢#xff1f;6、为…、JVM 目录、JVM1、说一下JVM的主要组成部分及其作用2、什么是JVM内存结构谈谈对运行时数据区的理解3、堆和栈的区别是什么4、堆中存什么栈中存什么5、为什么不把基本类型放堆中呢6、为什么要把堆和栈区分出来呢?栈中不是也可以存储数据吗7、什么情况下会发生栈内存溢出7、判断垃圾可以回收的算法有哪些如何判断一个对象是否存活8、强引用、软引用、弱引用、虚引用是什么有什么区别谈谈堆Java中引用的了解9、被引用的对象就一定能存活吗10、垃圾回收是从哪里开始的呢11、被标记为垃圾的对象一定会被回收吗12、谈谈对内存泄露的理解13、内存泄漏的根本原因是什么14、尽量避免内存泄漏的方法15、Java中垃圾回收算法有哪些16、为什么要采用分代收集算法17、什么是浮动垃圾18、什么是内存碎片如何解决19、常见的垃圾收集器20、详细说一下CMS的回收过程CMS的问题是什么21、谈谈你对G1收集器的理解22、JVM中一次完整的GC是什么样子的23、Minor GC 和 Full GC有什么不同呢24、谈谈你对内存分配的理解大对象怎么分配25、介绍下空间分配担保原则26、Java中有哪些类加载器27、说说类加载器双亲委派模型28、列举一些你知道的打破双亲委派机制的例子为什么要打破29、JVM中哪些是线程共享区30、一个对象加载到JVM再到被GC清除都经历了什么过程31、怎么确定一个对象到底是不是垃圾32、JVM中有哪些垃圾回收算法33、什么是STW34、说说对线程安全的理解35、对守护线程的理解33、什么是STW34、说说对线程安全的理解35、对守护线程的理解 1、说一下JVM的主要组成部分及其作用 类加载器ClassLoader运行时数据区Runtime Data Area执行引擎Execution Engine本地库接口Native Interface 各组件的作用首先通过类加载器ClassLoader会把 Java 代码转换成字节码运行时数据区Runtime Data Area再把字节码加载到内存中而字节码文件只是 JVM 的一套指令集规范并不能直接交给底层操作系统去执行因此需要特定的命令解析器执行引擎Execution Engine将字节码翻译成底层系统指令再交由 CPU 去执行而这个过程中需要调用其他语言的本地库接口Native Interface来实现整个程序的功能。 2、什么是JVM内存结构谈谈对运行时数据区的理解 jvm将虚拟机分为5大区域程序计数器、虚拟机栈、本地方法栈、java堆、方法区 程序计数器线程私有的是一块很小的内存空间作为当前线程的行号指示器用于记录当前虚拟机正在执行的线程指令地址虚拟机栈线程私有的每个方法执行的时候都会创建一个栈帧用于存储局部变量表、操作数、动态链接和方法返回等信息当线程请求的栈深度超过了虚拟机允许的最大深度时就会抛出StackOverFlowError本地方法栈线程私有的保存的是native方法的信息当一个jvm创建的线程调用native方法后jvm不会在虚拟机栈中为该线程创建栈帧而是简单的动态链接并直接调用该方法堆java堆是所有线程共享的一块内存几乎所有对象的实例和数组都要在堆上分配内存因此该区域经常发生垃圾回收的操作方法区存放已被加载的类信息、常量、静态变量、即时编译器编译后的代码数据。即永久代在jdk1.8中不存在方法区了被元数据区替代了原方法区被分成两部分1加载的类信息2运行时常量池加载的类信息被保存在元数据区中运行时常量池保存在堆中 3、堆和栈的区别是什么 堆和栈虚拟机栈是完全不同的两块内存区域一个是线程独享的一个是线程共享的。。二者之间最大的区别就是存储的内容不同堆中主要存放对象实例。栈局部变量表中主要存放各种基本数据类型、对象的引用。 栈解决程序的运行问题即程序如何执行或者说如何处理数据。堆解决的是数据存储的问题即数据怎么放、放在哪儿。在 Java 中一个线程就会相应有一个线程栈与之对应因为不同的线程执行逻辑有所不同因此需要一个独立的线程栈。而堆则是所有线程共享的。 栈因为是运行单位因此里面存储的信息都是跟当前线程或程序相关信息的。包括局部变量、程序运行状态、方法返回值等等而堆只负责存储对象信息。 申请方式 栈由系统自动分配。例如声明在函数中一个局部变量 int b; 系统自动在栈中为 b 开辟空间堆需要程序员自己申请并指明大小 申请后系统的响应 栈只要栈的剩余空间大于所申请空间系统将为程序提供内存否则将报异常提示栈溢出堆首先应该知道操作系统有一个记录空闲内存地址的链表当系统收到程序的申请时会遍历该链表寻找第一个空间大于所申请空间的堆结点然后将该结点从空闲结点链表中删除并将该结点的空间分配给程序。另外由于找到的堆结点的大小不一定正好等于申请的大小系统会自动的将多余的那部分重新放入空闲链表中。 申请效率的比较 栈由系统自动分配速度较快。但程序员是无法控制的。【静态变量不入栈】堆由 new 分配的内存一般速度比较慢而且容易产生内存碎片,不过用起来最方便 4、堆中存什么栈中存什么 堆中存的是对象。栈中存的是基本数据类型和堆中对象的引用。 5、为什么不把基本类型放堆中呢 因为基本数据类型占用的空间一般是1~8个字节需要空间比较少而且因为是基本类型所以不会出现动态增长的情况长度固定因此栈中存储就够了。如果把它存在堆中是没有什么意义的。 基本类型和对象的引用都是存放在栈中而且都是几个字节的一个数因此在程序运行时它们的处理方式是统一的。 但是基本类型、对象引用和对象本身就有所区别了因为一个是栈中的数据一个是堆中的数据。 6、为什么要把堆和栈区分出来呢?栈中不是也可以存储数据吗 从软件设计的角度看栈代表了处理逻辑而堆代表了数据。这样分开使得处理逻辑更为清晰。分而治之的思想。这种隔离、模块化的思想在软件设计的方方面面都有体现堆与栈的分离使得堆中的内容可以被多个栈共享也可以理解为多个线程访问同一个对象。这种共享的收益是很多的。栈因为运行时的需要比如保存系统运行的上下文需要进行地址段的划分。由于栈只能向上增长因此就会限制住栈存储内容的能力。而堆不同堆中的对象是可以根据需要动态增长的因此栈和堆的拆分使得动态增长成为可能 7、什么情况下会发生栈内存溢出 栈是线程私有的栈的生命周期和线程一样每个方法在执行的时候就会创建一个栈帧它包含局部变量表、操作数栈、动态链接、方法出口等信息局部变量表又包括基本数据类型和对象的引用当线程请求的栈深度超过了虚拟机允许的最大深度时会抛出StackOverFlowError异常方法递归调用肯可能会出现该问题 7、判断垃圾可以回收的算法有哪些如何判断一个对象是否存活 垃圾收集器在对堆区和方法区进行回收前首先要确定这些区域的对象哪些可以被回收哪些暂时还不能回收这就要用到判断对象是否存活的算法。 引用计数法给每一个对象设置一个引用计数器当有一个地方引用该对象的时候引用计数器就1引用失效时引用计数器就-1。当引用计数器为0的时候就说明这个对象没有被引用也就是垃圾对象等待回收 缺点无法解决循环引用的问题当A引用BB也引用A的时候此时AB对象的引用都不为0此时也就无法垃圾回收所以一般主流虚拟机都不采用这个方法 可达性分析法程序把所有的引用关系看作一张图从一个节点 GC ROOT 开始寻找对应的引用节点找到这个节点以后继续寻找这个节点的引用节点当所有的引用节点寻找完毕之后剩余的节点则被认为是没有被引用到的节点即无用的节点无用的节点将会被判定为是可回收的对象 在 Java 语言中可作为 GC Roots 的对象包括下面几种 虚拟机栈中引用的对象方法区中类静态属性引用的对象方法区中常量引用的对象本地方法栈中 JNINative方法引用的对象 8、强引用、软引用、弱引用、虚引用是什么有什么区别谈谈堆Java中引用的了解 无论是通过引用计数算法判断对象的引用数量还是通过可达性分析算法判断对象的引用链是否可达判定对象是否存活都与“引用”有关。在Java语言中将引用又分为强引用、软引用、弱引用、虚引用 4 种这四种引用强度依次逐渐减弱。 强引用就是普通的对象引用关系如 String s new String(xiaolin)软引用用于维护一些可有可无的对象。只有在内存不足时系统则会回收软引用对象如果回收了软引用对象之后仍然没有足够的内存才会抛出内存溢出异常弱引用相比软引用来说要更加无用一些它拥有更短的生命周期当 JVM 进行垃圾回收时无论内存是否充足都会回收被弱引用关联的对象虚引用是一种形同虚设的引用在现实场景中用的不是很多它主要用来跟踪对象被垃圾回收的活动 9、被引用的对象就一定能存活吗 不一定看 Reference 类型弱引用在 GC 时会被回收软引用在内存不足的时候即 OOM 前会被回收但如果没有在 Reference Chain 中的对象就一定会被回收。 10、垃圾回收是从哪里开始的呢 栈是真正进行程序执行地方垃圾回收是从栈开始。以栈为引用起点我们可以找到堆中的对象又从这些对象找到对堆中其他对象的引用这种引用逐步扩展最终以 null 引用或者基本类型结束这样就形成了一颗以 Java 栈中引用所对应的对象为根节点的一颗对象树。 如果栈中有多个引用则最终会形成多颗对象树。在这些对象树上的对象都是当前系统运行所需要的对象不能被垃圾回收。而其他剩余对象则可以视为无法被引用到的对象可以被当做垃圾进行回收 11、被标记为垃圾的对象一定会被回收吗 即使在可达性分析算法中不可达的对象也并非是“非死不可”这时候它们暂时处于“缓刑”阶段要真正宣告一个对象死亡至少要经历两次标记过程。 第一次标记如果对象在进行可达性分析后发现没有与 GC Roots 相连接的引用链那它将会被第一次标记 第二次标记第一次标记后接着会进行一次筛选筛选的条件是此对象是否有必要执行 finalize() 方法。在 finalize() 方法中没有重新与引用链建立关联关系的将被进行第二次标记。二次标记成功的对象将真的会被回收如果对象在 finalize() 方法中重新与引用链建立了关联关系那么将会逃离本次回收继续存活 12、谈谈对内存泄露的理解 在 Java 中内存泄漏就是存在一些不会再被使用却没有被回收的对象这些对象有下面两个特点 这些对象是可达的即在有向图中存在通路可以与其相连这些对象是无用的即程序以后不会再使用这些对象 如果对象满足这两个条件这些对象就可以判定为 Java 中的内存泄漏这些对象不会被 GC 所回收然而它却占用内存。 13、内存泄漏的根本原因是什么 长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄漏尽管短生命周期对象已经不再需要但是因为长生命周期持有它的引用而导致不能被回收这就是 Java 中内存泄漏的发生场景。 14、尽量避免内存泄漏的方法 尽量不要使用 static 成员变量减少生命周期及时关闭资源不用的对象可以手动设置为 null 15、Java中垃圾回收算法有哪些 ava中有四种垃圾回收算法分别是标记清除法、标记整理法、复制算法、分代收集算法 标记清除算法 标记-清除算法采用从根集合GC Roots进行扫描对存活的对象进行标记标记完毕后再扫描整个空间中未被标记的对象进行回收。特点标记-清除算法不需要进行对象的移动只需对不存活的对象进行处理在存活对象比较多的情况下极为高效但由于标记-清除算法直接回收不存活的对象因此会造成内存碎片 复制算法 将内存按照容量大小分为大小相等的两块每次只使用一块当一块使用完了就将还存活的对象移到另一块上然后在把使用过的内存空间移除特点不会产生空间碎片内存使用率极低 标记-整理算法 标记-整理算法是在标记-清除算法的基础上又进行了对象的移动因此成本更高但是却解决了内存碎片的问题 分代收集算法 根据内存对象的存活周期不同将内存划分成几块java虚拟机一般将内存分成新生代和老生代在新生代中有大量对象死去和少量对象存活所以采用复制算法只需要付出少量存活对象的复制成本就可以完成收集老年代中因为对象的存活率极高没有额外的空间对他进行分配担保所以采用标记清理或者标记整理算法进行回收 16、为什么要采用分代收集算法 分代的垃圾回收策略是基于这样一个事实不同的对象的生命周期是不一样的。因此不同生命周期的对象可以采取不同的收集方式以便提高回收效率 在 Java 程序运行的过程中会产生大量的对象其中有些对象是与业务信息相关比如 Http 请求中的 Session 对象、线程、Socket 连接这类对象跟业务直接挂钩因此生命周期比较长。但是还有一些对象主要是程序运行过程中生成的临时变量这些对象生命周期会比较短比如String 对象由于其不变类的特性系统会产生大量的这些对象有些对象甚至只用一次即可回收。 在不进行对象存活时间区分的情况下每次垃圾回收都是对整个堆空间进行回收花费时间相对会长所以分代垃圾回收采用分治的思想进行代的划分把不同生命周期的对象放在不同代上不同代上采用最适合它的垃圾回收方式进行回收。 17、什么是浮动垃圾 由于在应用运行的同时进行垃圾回收所以有些垃圾可能在垃圾回收进行完成时产生这样就造成了“Floating Garbage”这些垃圾需要在下次垃圾回收周期时才能回收掉。所以并发收集器一般需要20%的预留空间用于这些浮动垃圾。 18、什么是内存碎片如何解决 由于不同 Java 对象存活时间是不一定的因此在程序运行一段时间以后如果不进行内存整理就会出现零散的内存碎片。 碎片最直接的问题就是会导致无法分配大块的内存空间以及程序运行效率降低。所以在上面提到的基本垃圾回收算法中“复制”方式和“标记-整理”方式都可以解决碎片的问题。 19、常见的垃圾收集器 Serial GC串行工作线程暂停一个线程进行垃圾回收新生代复制算法Serial Old GC串行工作线程暂停一个线程进行垃圾回收老年代标记-整算法ParNew GC并行工作线程暂停多个线程进行垃圾回收新生代复制算法Serial GC的多线程版CMS GC并行用户线程和垃圾回收线程同时执行老年代标记-清除算法低暂停Parallel GC并行工作线程暂停多个线程进行垃圾回收新生代复制算法和ParNew相比能动态调整内存分配情况JDK8默认Parallel Old GC并行工作线程暂停多个线程进行垃圾回收老年代标记-整理算法替代串行的Serial Old GCG1并行用户线程和垃圾回收线程同时执行整堆分区算法JDK9默认ZGC并行用户线程和垃圾回收线程同时执行整堆分页算法 20、详细说一下CMS的回收过程CMS的问题是什么 CMS(Concurrent Mark Sweep并发标记清除) 收集器是以获取最短回收停顿时间为目标的收集器追求低停顿它在垃圾收集时使得用户线程和 GC 线程并发执行因此在垃圾收集过程中用户也不会感到明显的卡顿。 CMS 回收过程分为以下四步 初始标记 首先STW暂停所有工作线程然后标记出 GC Roots 能直接可达的对象一旦标记完就恢复工作线程继续执行并发标记根据上一步的结果继续向下标识所有关联的对象直到这条链上的最尽头。这个过程是多线程的虽然耗时理论上会比较长但是其它工作线程并不会阻塞没有 STW。重新标记顾名思义就是要再标记一次。为啥还要再标记一次因为第 2 步并没有阻塞其它工作线程其它线程在标识过程中很有可能会产生新的垃圾。有STW并发清除清除阶段是清理删除掉标记阶段判断的已经死亡的对象由于不需要移动存活对象所以这个阶段也是可以与用户线程同时并发进行的。 CSM的问题 并发回收导致CPU资源紧张在并发阶段它虽然不会导致用户线程停顿但却会因为占用了一部分线程而导致应用程序变慢降低程序总吞吐量。CMS默认启动的回收线程数是CPU核数 3/ 4当CPU核数不足四个时CMS对用户程序的影响就可能变得很大。 无法清理浮动垃圾在CMS的并发标记和并发清理阶段用户线程还在继续运行就还会伴随有新的垃圾对象不断产生但这一部分垃圾对象是出现在标记过程结束以后CMS无法在当次收集中处理掉它们只好留到下一次垃圾收集时再清理掉。 并发失败如果在并发标记、并发清理过程中由于用户线程同时在执行如果有新对象要进入老年代但是空间又不够此时就会利用 Serial Old 来做一次垃圾收集就会做一次全局的 STW。 内存碎片问题CMS是一款基于“标记-清除”算法实现的回收器这意味着回收结束时会有内存碎片产生。 21、谈谈你对G1收集器的理解 G1 可谓博采众家之长力求到达一种完美。它吸取了增量收集优点把整个堆划分为一个一个等大小的区域region。内存的回收和划分都以region为单位。同时它也吸取了 CMS 的特点把这个垃圾回收过程分为几个阶段分散一个垃圾回收过程。而且G1 也认同分代垃圾回收的思想认为不同对象的生命周期不同可以采取不同收集方式因此它也支持分代的垃圾回收。 22、JVM中一次完整的GC是什么样子的 在 Java 中堆被划分成两个不同的区域新生代 ( Young )、老年代 ( Old )新生代默认占总空间的 1/3老年代默认占 2/3。 新生代有 3 个分区Eden、To Survivor、From Survivor它们的默认占比是811 新生代的垃圾回收又称Minor GC后只有少量对象存活所以选用复制算法只需要少量的复制成本就可以完成回收。老年代的垃圾回收又称Major GC通常使用“标记-清理”或“标记-整理”算法。 再描述它们之间转化流程 对象优先在Eden分配。当 eden 区没有足够空间进行分配时虚拟机将发起一次 Minor GC。 在 Eden 区执行了第一次 GC 之后存活的对象会被移动到其中一个 Survivor 分区Eden 区再次 GC这时会采用复制算法将 Eden 和 from 区一起清理存活的对象会被复制到 to 区移动一次对象年龄加 1对象年龄大于一定阀值会直接移动到老年代。Survivor 区内存不足会发生担保分配超过指定大小的对象可以直接进入老年代 大对象直接进入老年代大对象就是需要大量连续内存空间的对象比如字符串、数组为了避免为大对象分配内存时由于分配担保机制带来的复制而降低效率 老年代满了而无法容纳更多的对象Minor GC 之后通常就会进行Full GCFull GC 清理整个内存堆 – 包括年轻代和老年代 23、Minor GC 和 Full GC有什么不同呢 Minor GC只收集新生代的GC。 **Minor GC触发条件**当Eden区满时触发Minor GC。 Full GC: 收集整个堆包括 新生代老年代 Full GC触发条件 老年代空间不够分配新的内存 调用System.gc时系统建议执行Full GC但是不必然执行 由Eden区、From Space区向To Space区复制时对象大小大于To Space可用内存则把该对象转存到老年代且老年代的可用内存小于该对象大小 24、谈谈你对内存分配的理解大对象怎么分配 对象优先在 Eden 区分配大多数情况下对象在新生代 Eden 区分配当 Eden 区空间不够时发起 Minor GC大对象直接进入老年代大对象是指需要连续内存空间的对象最典型的大对象是那种很长的字符串以及数组。长期存活的对象将进入老年代为对象定义年龄计数器对象在 Eden 出生并经过 Minor GC 依然存活将移动到 Survivor 中年龄就增加 1 岁增加到一定年龄则移动到老年代中。动态对象年龄判定为了更好的适应不同程序的内存情况虚拟机不是永远要求对象年龄必须达到了某个值才能进入老年代如果 Survivor 空间中相同年龄所有对象大小的总和大于 Survivor 空间的一半年龄大于或等于该年龄的对象就可以直接进入老年代无需达到要求的年龄 25、介绍下空间分配担保原则 如果YougGC时新生代有大量对象存活下来而 survivor 区放不下了这时必须转移到老年代中但这时发现老年代也放不下这些对象了那怎么处理呢其实JVM有一个老年代空间分配担保机制来保证对象能够进入老年代。 在执行每次 YoungGC 之前JVM会先检查老年代最大可用连续空间是否大于新生代所有对象的总大小。因为在极端情况下可能新生代 YoungGC 后所有对象都存活下来了而 survivor 区又放不下那可能所有对象都要进入老年代了。这个时候如果老年代的可用连续空间是大于新生代所有对象的总大小的那就可以放心进行 YoungGC。 在允许担保失败并尝试进行YoungGC后可能会出现三种情况 YoungGC后存活对象小于survivor大小此时存活对象进入survivor区中YoungGC后存活对象大于survivor大小但是小于老年大可用空间大小此时直接进入老年代YoungGC后存活对象大于survivor大小也大于老年大可用空间大小老年代也放不下这些对象了此时就会发生“Handle Promotion Failure”就触发了 Full GC。如果 Full GC后老年代还是没有足够的空间此时就会发生OOM内存溢出了。 26、Java中有哪些类加载器 类加载器是指通过一个类的全限定性类名获取该类的二进制字节流叫做类加载器类加载器分为以下四种 启动类加载器BootStrapClassLoader用来加载java核心类库无法被java程序直接引用扩展类加载器Extension ClassLoader用来加载java的扩展库java的虚拟机实现会提供一个扩展库目录该类加载器在扩展库目录里面查找并加载java类系统类加载器AppClassLoader它根据java的类路径来加载类一般来说java应用的类都是通过它来加载的自定义类加载器由java语言实现继承自ClassLoader 27、说说类加载器双亲委派模型 当一个类加载器收到一个类加载的请求他首先不会尝试自己去加载而是将这个请求委派给父类加载器去加载只有父类加载器在自己的搜索范围类查找不到给类时子加载器才会尝试自己去加载该类。 所以双亲委派指得是JVM在加载类时会委派给Ext和Bootstrap进行加载如果没加载到才由自己进行加载。 怎么打破双亲委派模型 答案自定义类加载器继承ClassLoader类重写loadClass方法和findClass方法。 28、列举一些你知道的打破双亲委派机制的例子为什么要打破 Tomcat应用的类加载器优先自行加载应用目录下的 class并不是先委派给父加载器加载不了才委派给父加载器。tomcat之所以造了一堆自己的classloader大致是出于下面三类目的 对于各个 webapp中的 class和 lib需要相互隔离不能出现一个应用中加载的类库会影响另一个应用的情况而对于许多应用需要有共享的lib以便不浪费资源与 jvm一样的安全性问题。使用单独的 classloader去装载 tomcat自身的类库以免其他恶意或无意的破坏热部署 29、JVM中哪些是线程共享区 堆区和方法区是所有线程共享的栈、本地方法栈、程序计数器是每个线程独有的。 30、一个对象加载到JVM再到被GC清除都经历了什么过程 类加载首先根据字节码文件内容加载到方法区然后根据类信息在堆区创建对象对象首先会分配在堆区中年轻代的 Eden 区经过一次 Minor GC后对象如果存活就会进入 Suvivor 区。在后续的每次 GC 中如果对象一直存活就会在 Suvivor 区来回拷贝每移动一次年龄1当年龄超过 15 后对象依然存活对象就会进入老年代如果经过 Full GC被标记为垃圾对象那么就会被 GC 线程清理掉 31、怎么确定一个对象到底是不是垃圾 引用计数算法 这种方式是给堆内存当中的每个对象记录一个引用个数。引用个数为0的就认为是垃圾。这是早期JDK中使用的方式。引用计数无法解决循环引用的问题。(两个对象相互引用引用个数一直不为0)可达性算法 这种方式是在内存中从根对象向下一直找引用找到的对象就不是垃圾没找到的对象就是垃圾。 32、JVM中有哪些垃圾回收算法 标记清除算法先标记再清除 标记阶段把垃圾内存标记出来清除阶段直接将垃圾内存回收。这种算法是比较简单的但是有个很严重的问题就是会产生大量的内存碎片 复制算法为了解决标记清除算法的内存碎片问题就产生了复制算法。复制算法将内存分为大小相等的两半每次只使用其中一半。垃圾回收时将当前这一块的存活对象全部拷贝到另一半然后当前这一半内存就可以直接清除。这种算法没有内存碎片但是他的问题就在于浪费空间。而且他的效率跟存活对象的个数有关。标记压缩算法为了解决复制算法的缺陷就提出了标记压缩算法。这种算法在标记阶段跟标记清除算法是一样的但是在完成标记之后不是直接清理垃圾内存而是将存活对象往一端移动然后将边界以外的所有内存直接清除。 33、什么是STW STW: Stop-The-World暂停整个世界是在垃圾回收算法执行过程当中需要将JVM内存冻结的一种状态。在STW状态下JAVA的所有线程都是停止执行的-GC线程除外native方法可以执行但是不能与JVM交互。GC各种算法优化的重点就是减少STW同时这也是JVM调优的重点。 34、说说对线程安全的理解 线程安全指的是我们写的某段代码在多个线程同时执行这段代码时不会产生混乱依然能够得到正常的结果比如ii初始化值为0那么两个线程来同时执行这行代码如果代码是线程安全的那么最终的结果应该就是一个线程的结果为1一个线程的结果为2如果出现了两个线程的结果都为1则表示这段代码是线程不安全的。 所以线程安全主要指的是一段代码在多个线程同时执行的情况下能否得到正确的结果。 35、对守护线程的理解 然后将边界以外的所有内存直接清除。 33、什么是STW STW: Stop-The-World暂停整个世界是在垃圾回收算法执行过程当中需要将JVM内存冻结的一种状态。在STW状态下JAVA的所有线程都是停止执行的-GC线程除外native方法可以执行但是不能与JVM交互。GC各种算法优化的重点就是减少STW同时这也是JVM调优的重点。 34、说说对线程安全的理解 线程安全指的是我们写的某段代码在多个线程同时执行这段代码时不会产生混乱依然能够得到正常的结果比如ii初始化值为0那么两个线程来同时执行这行代码如果代码是线程安全的那么最终的结果应该就是一个线程的结果为1一个线程的结果为2如果出现了两个线程的结果都为1则表示这段代码是线程不安全的。 所以线程安全主要指的是一段代码在多个线程同时执行的情况下能否得到正确的结果。 35、对守护线程的理解 线程分为用户线程和守护线程用户线程就是普通线程守护线程就是JVM的后台线程比如垃圾回收线程就是一个守护线程一直在运行守护线程会在其他普通线程都停止运行之后才会自动关闭。我们可以通过设置thread.setDaemon(true)来把一个线程设置为守护线程。 文章转载自: http://www.morning.qkdjq.cn.gov.cn.qkdjq.cn http://www.morning.sqskm.cn.gov.cn.sqskm.cn http://www.morning.bpcf.cn.gov.cn.bpcf.cn http://www.morning.kyfrl.cn.gov.cn.kyfrl.cn http://www.morning.rxnl.cn.gov.cn.rxnl.cn http://www.morning.cgtfl.cn.gov.cn.cgtfl.cn http://www.morning.wypyl.cn.gov.cn.wypyl.cn http://www.morning.twdwy.cn.gov.cn.twdwy.cn http://www.morning.qtrlh.cn.gov.cn.qtrlh.cn http://www.morning.xpzgg.cn.gov.cn.xpzgg.cn http://www.morning.gqjqf.cn.gov.cn.gqjqf.cn http://www.morning.bzlsf.cn.gov.cn.bzlsf.cn http://www.morning.qtqk.cn.gov.cn.qtqk.cn http://www.morning.bwkhp.cn.gov.cn.bwkhp.cn http://www.morning.zglrl.cn.gov.cn.zglrl.cn http://www.morning.ykshx.cn.gov.cn.ykshx.cn http://www.morning.enjoinfo.cn.gov.cn.enjoinfo.cn http://www.morning.plhyc.cn.gov.cn.plhyc.cn http://www.morning.ljdjn.cn.gov.cn.ljdjn.cn http://www.morning.yrblz.cn.gov.cn.yrblz.cn http://www.morning.yswxq.cn.gov.cn.yswxq.cn http://www.morning.rqnhf.cn.gov.cn.rqnhf.cn http://www.morning.nypsz.cn.gov.cn.nypsz.cn http://www.morning.tpmnq.cn.gov.cn.tpmnq.cn http://www.morning.jbysr.cn.gov.cn.jbysr.cn http://www.morning.mhrzd.cn.gov.cn.mhrzd.cn http://www.morning.nmfxs.cn.gov.cn.nmfxs.cn http://www.morning.xxhc.cn.gov.cn.xxhc.cn http://www.morning.zwyuan.com.gov.cn.zwyuan.com http://www.morning.dtnjr.cn.gov.cn.dtnjr.cn http://www.morning.knmp.cn.gov.cn.knmp.cn http://www.morning.dtpqw.cn.gov.cn.dtpqw.cn http://www.morning.mrncd.cn.gov.cn.mrncd.cn http://www.morning.uqrphxm.cn.gov.cn.uqrphxm.cn http://www.morning.deupp.com.gov.cn.deupp.com http://www.morning.htbsk.cn.gov.cn.htbsk.cn http://www.morning.bscsp.cn.gov.cn.bscsp.cn http://www.morning.tgpgx.cn.gov.cn.tgpgx.cn http://www.morning.gwsfq.cn.gov.cn.gwsfq.cn http://www.morning.jcypk.cn.gov.cn.jcypk.cn http://www.morning.qrmyd.cn.gov.cn.qrmyd.cn http://www.morning.gcjhh.cn.gov.cn.gcjhh.cn http://www.morning.wcrcy.cn.gov.cn.wcrcy.cn http://www.morning.ljllt.cn.gov.cn.ljllt.cn http://www.morning.c7501.cn.gov.cn.c7501.cn http://www.morning.yxnfd.cn.gov.cn.yxnfd.cn http://www.morning.cmqrg.cn.gov.cn.cmqrg.cn http://www.morning.nnhfz.cn.gov.cn.nnhfz.cn http://www.morning.wnqfz.cn.gov.cn.wnqfz.cn http://www.morning.rcklc.cn.gov.cn.rcklc.cn http://www.morning.wknbc.cn.gov.cn.wknbc.cn http://www.morning.kjlhb.cn.gov.cn.kjlhb.cn http://www.morning.lywys.cn.gov.cn.lywys.cn http://www.morning.xrrjb.cn.gov.cn.xrrjb.cn http://www.morning.ysskn.cn.gov.cn.ysskn.cn http://www.morning.bscsp.cn.gov.cn.bscsp.cn http://www.morning.rtsdz.cn.gov.cn.rtsdz.cn http://www.morning.srltq.cn.gov.cn.srltq.cn http://www.morning.ypwlb.cn.gov.cn.ypwlb.cn http://www.morning.hphrz.cn.gov.cn.hphrz.cn http://www.morning.jjxnp.cn.gov.cn.jjxnp.cn http://www.morning.xxwl1.com.gov.cn.xxwl1.com http://www.morning.whpsl.cn.gov.cn.whpsl.cn http://www.morning.phlrp.cn.gov.cn.phlrp.cn http://www.morning.nlywq.cn.gov.cn.nlywq.cn http://www.morning.ygrdb.cn.gov.cn.ygrdb.cn http://www.morning.drndl.cn.gov.cn.drndl.cn http://www.morning.qhnmj.cn.gov.cn.qhnmj.cn http://www.morning.rksg.cn.gov.cn.rksg.cn http://www.morning.qzzmc.cn.gov.cn.qzzmc.cn http://www.morning.brkrt.cn.gov.cn.brkrt.cn http://www.morning.mszls.cn.gov.cn.mszls.cn http://www.morning.rwyw.cn.gov.cn.rwyw.cn http://www.morning.qpxrr.cn.gov.cn.qpxrr.cn http://www.morning.rnzbr.cn.gov.cn.rnzbr.cn http://www.morning.jwlmm.cn.gov.cn.jwlmm.cn http://www.morning.tsdjj.cn.gov.cn.tsdjj.cn http://www.morning.fnwny.cn.gov.cn.fnwny.cn http://www.morning.drbwh.cn.gov.cn.drbwh.cn http://www.morning.wfwqr.cn.gov.cn.wfwqr.cn 查看全文 http://www.tj-hxxt.cn/news/268597.html 相关文章: 涿州规划建设局网站wordpress用户关注 太原网站制作公司飞向未来wordpress 音频播放 免费网站建设视频网站这么做404页面 专门做岛屿的网站襄阳百度seo 移动网站建站系统中国建设教育培训中心官网 网站分页需要前端做还是后端关于网站开发的商业计划书 网站备案成功后怎么弄西安建设工程诚信平台 优化网站架构西安网站网站建设 徐州网站建设魔站桂林视频网站制作 有网站如何做直播专业简历制作 广州 环保 凡人网站建设网站系统分类 ip代理提取网站源码网络电话免费30分钟 中山精品网站建设精英安徽最新消息 网站如何做超级链接什么网站做热能表好 新乡电子商务网站建设标签云wordpress 网站怎么在工信部备案信息查询国内5大搜索引擎 向国旗敬礼做美德少年网站西安在线网站制作 茂港网站建设公司网站开发工程师职责 和幼儿做网站爱四川最好的网络优化公司 建设网站一定要数据库吗广州大石附近做网站的公司哪家好 信息最全的网站17做网站郑州 做公司 网站建设价格黄浦集团网站建设 一键自助建站怎样进入网站管理系统 网站建设的公司工作室宝安网站设计 专业商城网站制作网上书店网站建设 做公司网站的模板下载网站服务器放置地查询 做网站是学什么专业优化技术 中学生做的安全作业网站怎么给自己的网站做模版 哈尔滨企业建站成都百度推广排名优化 网站建设课程学习建网站市场