Java学习
文章平均质量分 91
xwj1992930
https://github.com/xwj920930
展开
-
JVM调优实战及常量池详解
Arthas 是 Alibaba 在 2018 年 9 月开源的 Java 诊断工具。支持 JDK6+, 采用命令行交互模式,可以方便的定位和诊断线上程序运行问题。Arthas 官方文档十分详细,详见:https://alibaba.github.io/arthasArthas使用场景得益于 Arthas 强大且丰富的功能,让 Arthas 能做的事情超乎想象。下面仅仅列举几项常见的使用情况,更多的使用场景可以在熟悉了 Arthas 之后自行探索。Arthas使用用java -jar运行即可,可以识别机原创 2023-09-28 16:40:13 · 104 阅读 · 0 评论 -
JVM调优工具详解及调优实战
。原创 2023-09-28 13:57:00 · 103 阅读 · 0 评论 -
垃圾收集器G1&ZGC
XX:G1HeapWastePercent(默认5%): gc过程中空出来的region是否充足阈值,在混合回收的时候,对Region回收都是基于复制算法进行的,都是把要回收的Region里的存活对象放入其他Region,然后这个Region中的垃圾对象全部清理掉,这样的话在回收过程就会不断空出来新的Region,一旦空闲出来的Region数量达到了堆内存的5%,此时就会立即停止混合回收,意味着本次混合回收就结束了。,要回收的集合),尽量把GC导致的停顿时间控制在我们指定的范围内。原创 2023-09-27 17:26:33 · 96 阅读 · 0 评论 -
垃圾收集器ParNew&CMS与底层三色标记算法
SATB相对增量更新效率会高(当然SATB可能造成更多的浮动垃圾),因为不需要在重新标记阶段再次深度扫描被删除引用对象,而CMS对增量引用的根对象会做深度扫描,G1因为很多对象都位于不同的region,CMS就一块老年代区域,重新深度扫描对象的话G1的代价会比CMS高,所以G1选择SATB不深度扫描对象,只是简单标记,等到下一轮GC再深度扫描。就是当黑色对象插入新的指向白色对象的引用关系时, 就将这个新插入的引用记录下来, 等并发扫描结束之后, 再将这些记录过的引用关系中的黑色对象为根, 重新扫描一次。原创 2023-09-26 16:31:28 · 203 阅读 · 0 评论 -
JVM对象创建与内存分配机制
大量的对象被分配在eden区,eden区满了后会触发minor gc,可能会有99%以上的对象成为垃圾被回收掉,剩余存活的对象会被挪到为空的那块survivor区,下一次eden区满了后又会触发minor gc,把eden区和survivor区垃圾对象回收,把剩余存活的对象一次性挪动到另外一块为空的survivor区,因为新生代的对象都是朝生夕死的,存活时间很短,所以JVM默认的8:1:1的比例是很合适的,这个规则其实是希望那些可能是长期存活的对象,尽早进入老年代。如果没有,那必须先执行相应的类加载过程。原创 2023-09-26 09:50:34 · 284 阅读 · 0 评论 -
JVM内存模型
由于调整元空间的大小需要Full GC,这是非常昂贵的操作,如果应用在启动的时候发生大量Full GC,通常都是由于永久代或元空间发生了大小调整,基于这种情况,一般建议在JVM参数中将MetaspaceSize和MaxMetaspaceSize设置成一样的值,并设置得比初始值要大,对于8G物理内存的机器来说,一般我会将这两个值都设置为256M。-Xss:每个线程的栈大小,-Xss设置越小count值越小,说明一个线程栈里能分配的栈帧就越少,但是对JVM整体来说能开启的线程数会更多。-Xmn:新生代大小。原创 2023-09-25 13:19:55 · 173 阅读 · 0 评论 -
JVM类加载机制
自定义类加载器只需要继承 java.lang.ClassLoader 类,该类有两个核心方法,一个是loadClass(String, boolean),实现了。原创 2023-09-22 17:25:13 · 231 阅读 · 0 评论