
Java虚拟机
爱飞的笨鸟
千里之行,始于足下.
展开
-
1.JVM FullGC 触发条件汇总
一共5种场景1.System.gc()程序中显式的调用System.gc(),有可能会触发Full GC。(比如NIO中的直接内存使用)使用-XX:-+DisableExplicitGC 参数,可以禁用。2.老年代空间不足这个空间不足有两种,一种是分配一个对象,空间真的不足。另一种是由于内存碎片,导致没有连续内存空间来分配给对象。3.CMS GC时出现空间分配担保失败和concurren...转载 2019-11-12 10:45:17 · 4724 阅读 · 2 评论 -
一个由-XX:SurvivorRatio失效引发的探索
最近死磕一个关注吞吐量的应用程序,初期参数如下:-Xms4096m -Xmx4096m -Xss256K -XX:PermSize=128m -XX:MaxPermSize=256m -Xmn3g -XX:SurvivorRatio=4 -XX:+UseParallelGC -XX:ParallelGCThreads=16 -XX:+UseParallelOldGC -XX:...转载 2019-11-12 09:53:30 · 747 阅读 · 0 评论 -
JVM---双亲委派模型(源码详解)
含义1.双亲委派模型是从JDK1.2开始至今都在沿用的类加载模型,具体的逻辑是:先看源码: protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException { synchronized (getClassLoadingLock(...原创 2019-11-07 17:53:14 · 606 阅读 · 1 评论 -
JVM----垃圾收集信息解读实战
demo1public class Main { public static void main(String[] args) { { byte[] bytes=new byte[20*1024*1024]; } System.gc(); }}在 verbose:gc -XX:PrintGCDetail...原创 2019-11-04 18:05:42 · 167 阅读 · 0 评论 -
JVM---GC回收信息详解(PrintGCDetails)
Java GC日志可以通过 +PrintGCDetails开启以ParallelGC为例YoungGC日志解释如下(图片源地址:这里) :FullGC(图片源地址:这里):转载 2019-11-04 15:05:01 · 2053 阅读 · 2 评论 -
JVM------参数详解
内存相关选项 参数详解 默认值-Xms 初始堆大小 –-Xmx 最大堆大小 –-Xmn 年轻代大小(1.4or lator)整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8 –-XX:newSize 表示新生代初始内存的大小,应该小于 -Xms的值 ...转载 2019-10-29 10:53:13 · 202 阅读 · 0 评论 -
JVM----触发YoungGC与FullGC示例与思路
之前接触到的一道题目:请写一段程序,让其运行时的表现为触发5次ygc,然后3次fgc,然后3次ygc,然后1次fgc,请给出代码以及启动参数。找到了阿里中间件团队博客里面的两篇文章:GC悲观策略之Parallel GC篇GC悲观策略之Serial GC篇文章中总结的最重要的规则如下:总结上面分析的策略,可以看到采用Parallel GC的情况下,当YGC触发时,会有两个检查:1、在YG...转载 2019-10-29 09:57:53 · 3740 阅读 · 0 评论 -
1.内存管理-----Java虚拟机
1.简介以上个区域只是表示内存模型,并不代表各个区域的大小或者所占比例2.程序计数器3.Java 虚拟机栈StackOverFlowError(栈溢出)(一般递归调用方法时,如果没有截止条件,就会一直向虚拟栈中压入方法的栈帧,直到超过虚拟栈的内存,就会抛出该异常)OutOfMemoryError(内存溢出)这种异常在单线程运行环境中应该是不会出现的...原创 2019-10-22 09:15:41 · 147 阅读 · 0 评论