JVM
文章平均质量分 54
jvm,垃圾回收
houjibofa2050
读源码,要有技术深度,做一个把一招练一万遍的程序员。
展开
-
JMM内存模型及其常见面试问题
1.什么是JMM内存模型?JMM规定了java虚拟机与计算机内存之间如何协同工作,一个线程何时可以看到由其他线程修改的变量,以及如何同步访问的共享变量。本质是定义了线程与主内存之间的抽象关系。规定的几点:1.所有的变量都存储在主内存中2.线程的工作内存保存了该线程的使用的变量和主内存的副本copy3.线程对变量的操作只能在工作内存中处理,不能直接读写主内存4.jmm定义了三个特性 原子性,...原创 2021-08-18 10:48:58 · 471 阅读 · 0 评论 -
垃圾回收算法
对象存活判断:两种方式1.引用计数 2.对象可达引用计数为0,对象可以回收.对象不可达,对象可以回收.标记清除算法:分为两个阶段,一个是标记阶段,另一个是清除阶段.首先标记出要回收的对象,在标记结束后删除所有要回收的算法.复制算法将可用内存划分为大小相等的两块,每次只使用其中的一块,当一块用完了,将活着的对象移动到另一块.然后把使用过的内存进行清理.标记整理算法:首先标记...原创 2019-02-13 10:42:08 · 89 阅读 · 0 评论 -
jvm案例学习--jvm 参数模板
8G机器 jvm参数模板 -Xms4096M -Xmx4096M -Xmn3072M -Xss1M -XX:PermSize=256M -XX:MaxPermSize=256M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFaction=92 -XX:+UseCMSCompactAtFullCollect...原创 2019-09-19 15:25:12 · 325 阅读 · 0 评论 -
jvm案例学习--每秒10万+qps的社交app的jvm 优化
1. 社交app每秒10万+的qps的请求,eden区很快满了,surviver区放不下,对象进入老年代,老年代对象不断增加,频繁触发Full GC. jvm配置参数: -XX: +UseCMSCompationAtFullCollection -XX: CMSFullGcsBefoCompation=5" 解决方案: 增加新生代Eden与Surviver区的大小,减小老年代Full...原创 2019-09-19 14:48:16 · 448 阅读 · 0 评论 -
Metaspace区域内存溢出
设置Metaspace区域大小-XX:MetaspaceSize=512m-XX:MaxMetaspaceSize=512mMetaspace区域内存溢出的原因:1.使用默认的参数配置,默认的Metaspace内存太小,不够用2.使用cglibcglib动态生成一些类,导致Metaspace塞满.原因1: 调大Metaspace...原创 2019-09-18 17:27:19 · 1869 阅读 · 0 评论 -
模拟每秒10万并发的BI系统,观察频繁Young GC
代码:vm option-XX:NewSize=104857600 -XX:MaxNewSize=104857600 -XX:InitialHeapSize=209715200 -XX:MaxHeapSize=209715200 -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=15 -XX:PretenureSizeThreshold=31457...原创 2019-08-22 10:14:24 · 584 阅读 · 0 评论 -
jstat,jmap,jhat jvm定位线上问题
jstat 可以查看新对象的增速,Young GC触发频率,耗时,对象进入老年代的增速,Full GC的触发频率以及耗时.jmap和jhat 了解JVM的对象分布,哪些对象占据主角,占用了多少空间.1.打印堆内存相关的一些参数 jmap -heap PID2.了解系统运行时的对象分布 jmap -histo PID3.使用jmap生成堆内存转存...原创 2019-08-20 16:53:05 · 516 阅读 · 0 评论 -
对象进入老年代的常见的时机
对象进入老年代的常见的4个时机:1. 躲过15次gc,达到15次高龄之后进入老年代.2.动态年龄判定规则,如果Survivor区域内年龄1+年龄2+年龄3+年龄n的对象总和大于Survivor区的50%,此时年龄n以上的对象会进入老年代,不一定要达到15岁.3.如果一次Young GC后存活对象太多无法进入Survivor区,此时直接进入老年代.4.大对象直接进入老年代...原创 2019-08-19 14:53:49 · 1678 阅读 · 0 评论 -
golang垃圾回收算法
G1 垃圾回收设计思想: 把内存拆分成很多个小的Region,然后让新生代和老年代各自对应一些Region,回收的时候,尽可能挑选停顿时间最短以及回收对象最多的Region,尽量保证达到我们指定的垃圾回收系统停顿的时间1.region有多少个?每个Region大小是多大? -XX:+UseG1GC------ 指定使用G1垃圾回收器,jvm最多有2048个Regio...原创 2019-08-19 11:13:46 · 223 阅读 · 0 评论 -
jvm常见参数设置
jvm 的核心参数:1.-Xms: java堆内存的大小2.-Xmx: java 堆内存的最大值3. -Xmn: java的堆内存中新生代的大小4. -XX:PermSize : 永久代的大小5.-XX:maxPermSize: 永久代的最大大小6.-Xss:每个线程的栈内存大小:-Xms和-Xmx java 堆内存的大小和允许最大的大小,一般设置成一样....原创 2019-07-25 18:49:51 · 201 阅读 · 0 评论 -
什么情况下JVM内存中的一个对象会被垃圾回收
问题1: 哪些对象能回收,哪些对象不能被回收 jvm使用可达性分析算法判断哪些对象可以被回收.也就是分析一下每个对象,看一下有谁在引用他,然后一层一层往上判断,看看是否有一个GC Roots问题2: 哪些变量可以作为GC Roots 局部变量,静态变量可以看做一种GC Roots问题三: Java 中的引用类型有哪些 Java中的引...原创 2019-07-24 15:00:41 · 371 阅读 · 0 评论 -
JVM有哪些垃圾回收算法
1.新生代的垃圾回收算法是复制算法2.新生代内存空间不足,会触发Minor GC回收掉新生代垃圾对象新生代内存有两块内存区域方法一:-------不好的垃圾回收思路 直接对一块内存空间,回收垃圾对象,保留存活对象问题: 内存碎片太多,会造成大量的内存浪费.很多的内存碎片无法使用.方法二: -------合理的垃圾回收思路复制算法: ...原创 2019-07-24 14:26:54 · 444 阅读 · 1 评论 -
jvm -D 参数
jvm -D参数 是用户在部署项目时和启动时,进行参数的重写.vm options 程序的启动参数原创 2019-01-23 15:12:45 · 1432 阅读 · 0 评论