JVM
文章平均质量分 94
小王爷很帅
这个作者很懒,什么都没留下…
展开
-
JVM参数汇总
XX:G1HeapWastePercent(默认5%): gc过程中空出来的region是否充足阈值,在混合回收的时候,对Region回收都是基于复制算法进行的,都是把要回收的Region里的存活对象放入其他Region,然后这个Region中的垃圾对象全部清理掉,这样的话在回收过程就会不断空出来新的Region,一旦空闲出来的Region数量达到了堆内存的5%,此时就会立即停止混合回收,意味着本次混合回收就结束了。-Xss:每个线程的栈大小,针对的是单个线程。默认15次,CMS默认6次。原创 2023-07-16 16:09:01 · 168 阅读 · 1 评论 -
常量池讲解
Class常量池可以理解为是Class文件中的资源仓库。Class文件中除了包含类的版本、字段、方法、接口等描述信息外,还有一项信息就是,用于存放编译期生成的各种字面量(Literal)和符号引用(Symbolic References)。原创 2023-07-15 23:14:59 · 328 阅读 · 1 评论 -
JVM调优工具详解及调优实战
此命令可以用来查看内存信息,实例个数以及占用内存大小生成的txt文件。原创 2023-07-13 23:44:35 · 817 阅读 · 1 评论 -
垃圾收集器G1
G1 (Garbage-First)是一款面向服务器的垃圾收集器,以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征.G1将Java堆划分为多个大小相等的独立区域(),JVM目标是不超过(JVM源码里TARGET_REGION_NUMBER 定义),实际可以超过该值,但是不推荐。一般Region大小等于堆大小除以2048,比如堆大小为4096M,则Region大小为2M,当然也可以用参数"-XX:G1HeapRegionSize"手动指定Region大小,但是推荐默认的计算方式。原创 2023-07-11 21:17:51 · 228 阅读 · 0 评论 -
垃圾收集器ParNew&CMS与底层三色标记算法详解
当前虚拟机的垃圾收集都采用分代收集算法,这种算法没有什么新的思想,只是根据对象存活周期的不同将内存分为几块。一般将java堆分为新生代和老年代,这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。比如在新生代中,每次收集都会有大量对象(近99%)死去,所以可以选择复制算法,只需要付出少量对象的复制成本就可以完成每次垃圾收集。而老年代的对象存活几率是比较高的,而且没有额外的空间对它进行分配担保,所以我们必须选择“标记-清除”或“标记-整理”算法进行垃圾收集。原创 2023-07-09 21:01:01 · 97 阅读 · 1 评论 -
JVM对象创建与内存分配机制深度剖析
虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。new指令对应到语言层面上讲是,new关键词、对象克隆、对象序列化等。原创 2023-07-07 23:45:52 · 592 阅读 · 1 评论 -
JVM内存模型深度剖析与优化
a. Eden、Survivor From复制到SurvivorTo,年龄+1首先,当Eden区满的时候会触发第一次GC,把还活着的对象拷贝到SurvivorFrom区,当Eden区再次触发GC的时候会扫描Eden区和From区域,对这两个区域进行垃圾回收,经过这次回收后还存活的对象,则直接复制到To区域(如果有对象的年龄已经达到了老年的标准,则赋值到老年代区),同时把这些对象的年龄+1。b. 清空eden-Survivor Erom。原创 2023-07-05 21:53:35 · 99 阅读 · 1 评论 -
从JDK源码级别彻底剖析JVM类加载机制
自定义类加载器只需要继承 java.lang.ClassLoader 类,该类有两个核心方法,一个是loadClass(String, boolean),实现了。原创 2023-07-02 18:46:29 · 199 阅读 · 1 评论