JVM
文章平均质量分 95
Netgrow
这个作者很懒,什么都没留下…
展开
-
JVM调优实战及常量池详解
文章目录一、阿里巴巴Arthas详解Arthas使用场景Arthas使用GC日志详解JVM参数汇总查看命令Class常量池与运行时常量池符号引用字符串常量池字符串常量池设计原理八种基本类型的包装类和对象池总结一、阿里巴巴Arthas详解Arthas 是 Alibaba 在 2018 年 9 月开源的 Java 诊断工具。支持 JDK6+, 采用命令行交互模式,可以方便的定位和诊断线上程序运行问题。Arthas 官方文档十分详细,详见:https://alibaba.github.io/arthas原创 2021-08-10 13:56:08 · 373 阅读 · 0 评论 -
垃圾收集器G1&ZGC详解
文章目录一、G1收集器(-XX:+UseG1GC)G1垃圾收集分类二、ZGC收集器(-XX:+UseZGC)颜色指针ZGC触发时机三、如何选择垃圾收集器安全点与安全区域总结一、G1收集器(-XX:+UseG1GC)G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征.G1将Java堆划分为多个大小相等的独立区域(Region),JVM目标是不超过2048个Region(JVM源原创 2021-08-09 15:22:13 · 787 阅读 · 0 评论 -
JVM调优工具详解及调优实战
文章目录一、前置启动程序JmapJstackJinfoJstat二、垃圾回收统计堆内存统计新生代垃圾回收统计新生代内存统计老年代垃圾回收统计老年代内存统计元数据空间统计JVM运行情况预估系统频繁Full GC导致系统卡顿是怎么回事内存泄露到底是怎么回事总结一、前置启动程序事先启动一个web应用程序,用jps查看其进程id,接着用各种jdk自带命令优化应用Jmap此命令可以用来查看内存信息,实例个数以及占用内存大小jmap -histo 14660 #查看历史生成的实例jmap -hist原创 2021-08-09 14:42:31 · 323 阅读 · 0 评论 -
垃圾收集器ParNew&CMS与底层三色标记算法详解
文章目录一、垃圾收集算法分代收集理论标记-复制算法标记-清除算法标记-整理算法二、垃圾收集器1.1 Serial收集器(-XX:+UseSerialGC -XX:+UseSerialOldGC)1.2 Parallel Scavenge收集器(-XX:+UseParallelGC(年轻代),-XX:+UseParallelOldGC(老年代))1.3 ParNew收集器(-XX:+UseParNewGC)1.4 CMS收集器(-XX:+UseConcMarkSweepGC(old))亿级流量电商系统如何优原创 2021-08-07 16:08:11 · 217 阅读 · 0 评论 -
JVM内存分配机制详解
文章目录一、对象的创建1.类加载检查2.分配内存3.初始化零值4.设置对象头5.执行方法二、总结一、对象的创建对象创建的主要流程:1.类加载检查虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。new指令对应到语言层面上讲是,new关键词、对象克隆、对象序列化等。2.分配内存在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需内存的大小在原创 2021-08-05 16:49:11 · 771 阅读 · 0 评论 -
JVM内存模型深度剖析与优化
文章目录一、JDK体系结构Java语言的跨平台特性JVM整体结构及内存模型二、JVM内存参数设置总结一、JDK体系结构Java语言的跨平台特性JVM整体结构及内存模型补充一个问题:在minor gc过程中对象挪动后,引用如何修改?对象在堆内部挪动的过程其实是复制,原有区域对象还在,一般不直接清理,JVM内部清理过程只是将对象分配指针移动到区域的头位置即可,比如扫描s0区域,扫到gcroot引用的非垃圾对象是将这些对象复制到s1或老年代,最后扫描完了将s0区域的对象分配指针移动到区域的起原创 2021-07-28 15:30:48 · 126 阅读 · 0 评论 -
JVM类加载机制
文章目录一、类加载运行全过程二、类加载器和双亲委派机制双亲委派机制总结一、类加载运行全过程当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到JVM。package com.example.jvm;public class Math { public static final int initData = 666; public static User user = new User(); public int compute()原创 2021-07-27 22:13:30 · 105 阅读 · 0 评论