
JVM调优
文章平均质量分 69
鱼跃鹰飞
大厂小架,喜欢探索,住在海边喜欢浪!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
大厂面试真题-Arthas有哪些常用的命令
Arthas是Alibaba开源的一款Java诊断工具,它可以在不重启JVM的情况下,动态地查看JVM运行状态、类加载情况、内存使用情况、线程执行情况等,帮助开发者轻松排查线上问题。火焰图的X轴代表采样总量(所有执行的耗时CPU的方法),Y轴代表方法的调用栈深度,每一层都是一个方法。此外,还可以通过特定参数找出阻塞其他线程的线程,以及查看线程的堆栈信息等。:进入仪表盘,可以监控线程、内存状态、GC(垃圾回收)等信息,是查看JVM整体运行情况的快速入口。:记录方法执行数据的时空隧道,可以回溯方法的执行情况。原创 2024-10-18 15:14:46 · 601 阅读 · 0 评论 -
大厂面试真题-如果通过JVM自带的工具排查和解决线上CPU100%的问题
通过以上步骤,可以利用JVM自带的工具定位和解决线上CPU 100%的问题。在实际操作中,可能需要根据具体情况灵活调整排查步骤和解决方案。同时,也需要注意保持系统的稳定性和可靠性,避免在排查和解决问题的过程中对业务造成不必要的影响。原创 2024-10-11 21:50:27 · 525 阅读 · 0 评论 -
大厂面试真题-CPU飙升问题怎么定位
归纳原因:根据上述分析步骤,归纳出CPU飙升的原因,如软件bug、资源分配不当、硬件故障等。制定解决方案:根据原因制定相应的解决方案,如修复代码缺陷、增加硬件资源、调整系统配置等。综上所述,定位CPU飙升问题需要综合运用系统监控工具、深入分析进程、检查系统资源、系统优化与调整以及硬件检查等多个方面的知识和方法。通过全面而细致的分析和排查,才能准确找到问题的根源并制定相应的解决方案。原创 2024-10-11 21:47:56 · 589 阅读 · 0 评论 -
大厂面试真题-StringBuffer怎么实现的线程安全?所有的方法都是这么实现的吗?
String:不可变字符串,适用于不需要频繁修改字符串内容的场景。:可变字符序列,效率高但线程不安全,适用于单线程环境下需要频繁修改字符串内容的场景。:可变字符串,线程安全但效率略低,适用于多线程环境下需要频繁修改字符串内容的场景。在实际应用中,应根据具体需求选择合适的字符串处理类,以优化程序的性能和可靠性。原创 2024-10-10 21:43:56 · 387 阅读 · 0 评论 -
大厂面试真题-说说String、StringBuilder和StringBuffer的区别
String:不可变字符串,适用于不需要频繁修改字符串内容的场景。:可变字符序列,效率高但线程不安全,适用于单线程环境下需要频繁修改字符串内容的场景。:可变字符串,线程安全但效率略低,适用于多线程环境下需要频繁修改字符串内容的场景。在实际应用中,应根据具体需求选择合适的字符串处理类,以优化程序的性能和可靠性。原创 2024-10-10 21:42:53 · 731 阅读 · 0 评论 -
大厂面试真题-CAS的弊端和规避措施
于预期引用,以及当前印戳是否等于预期印戳,如果全部相等,就以原子方式将引用和印戳的值一。在变量前面追加上版本号,每次变量更新的时候将版。一个比较简单的规避方法为:把多个共享变量合并成一个共享变量来操作。如果长时间不成功(不成功就一直循环执行,直到成功为止),就会给。一致性流量过大,总线将成为瓶颈,这就是所谓的“总线风暴”。操作内存数据时,当数据发生过变化也能更新成功,如操作序列。类来保证引用对象之间的原子性,可以把多个变量放在一个。)只能保证一个共享变量之间的原子性操作。的方式来保证原子操作,但是对多个。原创 2024-10-08 21:50:10 · 500 阅读 · 0 评论 -
大厂面试真题-说说AtomicInteger 线程安全原理
Java 高并发核心编程 卷 2(加强版):多线程、锁、JMM、JUC、高并发设计模式。的原理比较复杂,简单地说,该关键字可以保证任何线程在任何时刻总能拿到该变量的最。至于什么是变量的线程可见性,具体请参见第。新值,其目的在于保障变量值的线程可见性。关键字用于保障变量的可见性,二者。变量操作的线程安全性,又避免了。相结合的方案实现,既保障了。用于保障变量操作的原子性,源码为例分析一下原子类的。方式赋值,直到成功返回。源码中的主要方法都是通过。声明:本文来源于网络。重量级锁的高开销,使得。原创 2024-10-08 21:47:00 · 537 阅读 · 0 评论 -
大厂面试真题:说一说CMS和G1
它通过引入分区(Region)和分治策略,将堆内存划分为多个固定大小的Region,并独立管理这些Region的垃圾回收过程。需要注意的是,虽然我们将CMS垃圾回收器的过程概括为四个主要步骤,但每个步骤内部可能还包含更细致的子步骤或优化机制。此外,CMS垃圾回收器也面临一些挑战,如浮动垃圾问题(即在并发清除阶段新产生的垃圾无法立即被回收)和空间碎片问题(由于标记-清除算法可能导致内存碎片)。综上所述,CMS和G1各有优劣,在选择垃圾回收器时,应根据具体的应用场景和性能需求进行权衡和选择。原创 2024-10-07 21:03:35 · 1136 阅读 · 0 评论 -
大厂面试真题:阿里经典双重检测DCL对象半初始化问题
双重检测锁是一种用于实现单例模式的线程安全方法。在多线程环境下,它允许延迟对象的初始化,同时减少同步的开销。其基本思路是:在第一次检查对象是否已经被实例化时,不需要加锁,只有在对象尚未被实例化的情况下,才进入同步块进行加锁和实例化操作。原创 2024-10-07 20:10:16 · 771 阅读 · 0 评论 -
大厂面试真题-说说synchronized的锁升级过程
在Java中,关键字是实现线程同步的一种方式,但其性能受到锁开销的影响。为了减少锁带来的性能损失,Java虚拟机(JVM)设计了一套锁升级机制。这一机制使得锁可以从无锁状态逐渐升级至重量级锁,以根据竞争程度动态调整锁策略,达到最佳性能平衡。以下是。原创 2024-10-07 16:41:47 · 935 阅读 · 0 评论 -
大厂面试真题:G1比CMS好在哪?一定好吗
这个题我先说以下G1也未必就比CMS要好当堆内存大于6G时,使用G1垃圾回收器相较于CMS(Concurrent Mark-Sweep)垃圾回收器,通常会有更好的性能和可预测性。原创 2024-09-29 18:30:34 · 1137 阅读 · 0 评论 -
大厂面试真题-G1是怎么实现的按照设置的停顿时间执行垃圾回收
G1垃圾回收器(Garbage-First Garbage Collector)通过一系列精心设计的机制来实现按照设定的停顿时间来执行垃圾回收。原创 2024-09-29 17:47:45 · 936 阅读 · 0 评论 -
JMM内存模型(Java多线程内存模型不是Java虚拟机内存模型)
这个程序中如果要保证修改立马生效的话就需要对于变量initFlag加上volitiel的关键字(保证可见性)加volitile之前的整体流程(对应于上面的那段代码),write的实际是方法结束前。加了volitile就会有lock这个关键字,如果没有volitile就没有。lock修饰的代码前后左右不能重排序。原创 2022-12-05 18:15:00 · 96 阅读 · 0 评论 -
某大厂线上JVM参数(CMS+ParNew)参数解析
参数后,CMS在执行Remark阶段之前,会先执行一次年轻代的垃圾收集(CMS来执行这次新生代的垃圾回收,而不是ParNew)。参数的作用是在CMS的"Remark"阶段(重新标记阶段)之前执行一次年轻代的垃圾收集(Scavenge)。一般来说,这个参数通常在特定的性能调优场景下使用,而不是在普通应用程序中启用,因为它可能会导致垃圾收集操作的复杂性增加,可能会影响应用程序的性能。-XX:+UseConcMarkSweepGC 启用了 CMS 垃圾收集器,它是一种并发垃圾收集器,用于老年代的垃圾回收。原创 2023-09-17 15:57:00 · 279 阅读 · 0 评论 -
Java中的垃圾回收
从原理到调优实战,CMS相关面试题,G1和CMS的优缺点原创 2022-12-14 20:20:07 · 427 阅读 · 0 评论