![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
文章平均质量分 97
主要记录jvm的只是点,以及线上遇到的jvm问题
他叫阿来
这个作者很懒,什么都没留下…
展开
-
HotSpot虚拟机的几个实现细节
安全点的设计似乎完美的解决了如何停顿用户线程,它能保证用户线程在执行时,不太长时间内就会遇到可进入垃圾回收的安全点,但是如果用户线程本身就没在执行呢?比如用户线程处于 sleep 或者 blocked 状态,这个时候它就无法响应虚拟机的中断请求,没办法主动走到安全的地方中断挂起自己,对于这种情况就必须引入安全区域( Safe Regin )来解决。安全区域是指能够确保在某一段代码片段之中, 引用关系不会发生变化,因此,在这个区域中任意地方开始垃圾收集都是安全的。我们也可以把安全区域看作被扩展拉伸了的安全原创 2024-05-27 10:38:54 · 292 阅读 · 0 评论 -
垃圾收集器
的值 来提高CMS的触发百分比, 降低内存回收频率, 获取更好的性能。:要实现这个目标,首先要有一个思想上的转变,G1收集器出现之前的其他所有收集器,他们的收集范围要么是新生代( Minor GC ),要么是老年代( Major GC ),要么是整堆( Full GC ),而G1跳出了这个樊笼,它可以面向堆内存任何部分来组成回收集( Collection Set , CSet )进行回收,衡量标准不再是它属于哪个分代,而是哪个回收集中存放的垃圾最多,回收收益最大,就回收哪个。垃圾收集器是算法的落地实现。原创 2024-05-26 18:06:00 · 750 阅读 · 0 评论 -
垃圾回收机制及算法
2、老年代回收( Major GC/Old GC ):指的是进行老年代的回收。在JDK1.2之后,Java对引用的概念做了扩充,将引用分为 强引用(Strong Reference) 、 软引用(Soft Reference) 、 弱引用(Weak Reference) 和 虚引用(Phantom Reference) 四种,这四种引用的强度依次递减。根据以上两个理论,朝生夕死的对象放一个区域,难回收的对象放另外一个区域,这个就构成了新生代和老年代,并且不同的分代采用的回收算法不一样。原创 2024-05-26 10:07:05 · 616 阅读 · 0 评论 -
jvm的类加载
除了上面的系统提供的3种loader,jvm允许自己定义类加载器,典型的在tomcat上:隔离加载类模块隔离,把类加载到不同的应用选中。比如tomcat这类web应用服务器,内部自定义了好几中类加载器,用于隔离web应用服务器上的不同应用程序。修改类加载方式除了Bootstrap加载器外,其他的加载并非一定要引入。根据实际情况在某个时间点按需进行动态加载。扩展加载源比如还可以从数据库、网络、或其他终端上加载防止源码泄露。原创 2024-05-26 07:20:05 · 882 阅读 · 0 评论 -
java中的对象
在 JVM 开启逃逸分析后,如果对象没有逃逸,结合对象的大小等因素决定对象分配在栈上。其本质是Java虚拟机提供的一项优化技术。**逃逸分析**JVM会分析对象的动态作用域,当一个对象在方法中定义后,它可能被外部所引用,称之为逃逸。比如:通过调用参数传递到其他方法中,称之为**方法逃逸**;赋值给其他线程中访问的变量,称之为**线程逃逸**。 从不逃逸到方法逃逸到线程逃逸,称之为对象由低到高的不同逃逸程度。开启逃逸分析需要配置以下参数:`XX:+DoEscapeAnalysis`,默认开启。原创 2024-05-25 15:16:29 · 888 阅读 · 0 评论 -
java虚拟机内存管理
根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。原创 2023-12-30 14:38:25 · 1174 阅读 · 0 评论