文章 2022-01-07 来自:开发者社区

JVM00_面试官对类加载器子系统、运行时数据区、内存分布、执行引擎的灵虚拷问,你能坚持到第几问?(一)

①. JDK中包含了哪些内容?①. JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。其中的开发工具:编译工具(javac.exe) 打包工具(jar.exe)等②. JRE(Java Runtime Environment Java运行环境):包括Java虚拟机(JVM Java Virtual Machine)和J....

JVM00_面试官对类加载器子系统、运行时数据区、内存分布、执行引擎的灵虚拷问,你能坚持到第几问?(一)
文章 2022-01-06 来自:开发者社区

JVM11_System.gc、内存溢出、内存泄漏、STW、安全点、安全区域、强软弱虚引用(六)

③. 弱引用: 发现即回收①. 弱引用也是用来描述那些非必需对象,被弱引用关联的对象只能生存到下一次垃圾收集发生为止。在系统GC时,只要发现弱引用,不管系统堆空间使用是否充足,都会回收掉只被弱引用关联的对象②. 但是,由于垃圾回收器的线程通常优先级很低,因此,并不一 定能很快地发现持有弱引用的对象。在这种情况下,弱引用对象可以存在较长的时间。③. 弱引用和软引用一样,在构造弱引用时,也可以指定一....

文章 2022-01-06 来自:开发者社区

JVM11_System.gc、内存溢出、内存泄漏、STW、安全点、安全区域、强软弱虚引用(五)

⑨. 引用①. 我们希望能描述这样一类对象: 当内存空间还足够时,则能保留在内存中;如果内存空间在进行垃圾收集后还是很紧张,则可以抛弃这些对象。 -【既偏门又非常高频的面试题】强引用、软引用、弱引用、虚引用有什么区别?具体使用.场景是什么?②. 在JDK 1.2版之后,Java对引用的概念进行了扩充,将引用分为强引用(StrongReference)、软引用(Soft Reference) 、弱....

JVM11_System.gc、内存溢出、内存泄漏、STW、安全点、安全区域、强软弱虚引用(五)
文章 2022-01-06 来自:开发者社区

JVM11_System.gc、内存溢出、内存泄漏、STW、安全点、安全区域、强软弱虚引用(四)

⑦. 安全点(Safepoint)①. 程序执行时并非在所有地方都能停顿下来开始GC,只有在特定的位置才能停顿下来开始GC,这些位置称为 “安全点(Safepoint)”②. Safe Point的选择很重要,如果太少可能导致GC等待的时间太长,如果太频繁可能导致运行时的性能问题。大部分指令的执行时间都非常短暂,通常会根据“是否具有让程序长时间执行的特征”为标准。比如:选择些执行时间较长的指令作....

文章 2022-01-06 来自:开发者社区

JVM11_System.gc、内存溢出、内存泄漏、STW、安全点、安全区域、强软弱虚引用(三)

⑤. 多线程中的并行与并发①. 并发(Concurrent)在操作系统中,是指一个时间段中有几个程序都处于己启动运行到运行完毕之间,且这几个程序都是在同一个处理器_上运行并发不是真正意义上的“同时进行”,只是CPU把一个时间段划分成几个时间片段(时间区间),然后在这几个时间区间之间来回切换,由于CPU处理的速度非常快,只要时间间隔处理得当,即可让用户感觉是多个应用程序同时在进行图解:②. 并行(....

JVM11_System.gc、内存溢出、内存泄漏、STW、安全点、安全区域、强软弱虚引用(三)
文章 2022-01-06 来自:开发者社区

JVM11_System.gc、内存溢出、内存泄漏、STW、安全点、安全区域、强软弱虚引用(二)

③. 内存泄漏(Memory Leak)①. 也称作“存储渗漏”。严格来说,只有对象不会再被程序用到了,但是GC又不能回收他们的情况,才叫内存泄漏②. 但实际情况很多时候一些不太好的实践(或疏忽)会导致对象的生命周期变得很长甚至导致OOM,也可以叫做宽泛意义上的“内存泄漏③. 尽管内存泄漏并不会立刻引起程序崩溃,但是一旦发生内存泄漏,程序中的可用内存就会被逐步蚕食,直至耗尽所有内存,最终出现0u....

文章 2022-01-06 来自:开发者社区

JVM11_System.gc、内存溢出、内存泄漏、STW、安全点、安全区域、强软弱虚引用(一)

①. System.gc()的理解①. 在默认情况下,通过System.gc( )或者Runtime . getRuntime( ).gc( )的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。②. 然而System.gc()调用附带一个免责声明,无法保证对垃圾收集器的调用(无法保证马上触发GC)。[不保证一定会发生垃圾收集,只是给jvm发出提示]③.....

文章 2022-01-06 来自:开发者社区

JVM08_字符串常量池基本特性、内存分配、拼接操作、intern、StringTable垃圾回收(四)

⑥. intern()效率测试大的网站平台,需要内存中存储大量的字符串。比如社交网站,很多人都存储:北京市、海淀区等信息。这时候如果字符串都调用 intern()方法,就会明显降低内存的大小。/** * 使用intern()测试执行效率:空间使用上 * * 结论:对于程序中大量存在存在的字符串,尤其其中存在很多重复字符串时,使用intern()可以节省内存空间。 * */ public...

JVM08_字符串常量池基本特性、内存分配、拼接操作、intern、StringTable垃圾回收(四)
文章 2022-01-06 来自:开发者社区

JVM08_字符串常量池基本特性、内存分配、拼接操作、intern、StringTable垃圾回收(三)

⑤. intern()的使用前言:(1). 如果不是用双引号声明的String对象,可以使用String提供的intern方法: intern方法会从字符串常量池中查询当前字符串是否存在,若不存在就会将当前字符串放入常量池中(2). 比如: String myInfo = new String(“I love u”).intern();也就是说,如果在任意字符串上调用String. intern....

JVM08_字符串常量池基本特性、内存分配、拼接操作、intern、StringTable垃圾回收(三)
文章 2022-01-06 来自:开发者社区

JVM08_字符串常量池基本特性、内存分配、拼接操作、intern、StringTable垃圾回收(二)

③. 字符串拼接操作①. 常量与常量的拼接结果在常量池,原理是编译期优化②. 常量池中不会存在相同内容的常量。③. 只要其中有一个是变量,结果就在堆中(只有有一个是变量,那么它会在堆中创建一个StringBuilder,调用append( )方法进行添加操作,调用toString( )方法转换为字符串【toString( )方法其实就是:new String( )】)④. 如果拼接的结果调用in....

JVM08_字符串常量池基本特性、内存分配、拼接操作、intern、StringTable垃圾回收(二)

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

产品推荐

Java开发者

Java开发者成长课堂,课程资料学习,实战案例解析,Java工程师必备词汇等你来~

+关注