实战-用户中心-还原并验证使用caffeine出现频繁gc和oom的场景

本文是针对上一篇文章 实战-用户中心-l2cache-Caffeine的OOM异常分析
的验证,请结合起来看。

1、配置JVM参数,以便观察GC的情况。

-Xmx10M -Xms10M -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps

2、验证代码

    public static void main(String[] args) {
        Cache<String, String> cache= Caffeine.newBuilder()
                .initialCapacity(32)
                .maximumSize(1000)// 最大元素数量
                .build();

        for (int i = 0; i < 1000000; i++) {
            if (i % 10000 == 0) {
                System.out.println(“size=+cache.estimatedSize());
            }
            cache.put("key" + i, "valuevvvvvvvvvvvvvvvvv" + i);
        }
        System.out.println(“size=+cache.estimatedSize());
    }

3、运行结果

  • 未设置JVM参数的运行结果
    可以直观的看出,缓存数量有大于1000的情况,而且还挺多的,若数据量更大的话,那么极有可能出现OOM的情况。
size=0
size=2120
size=1461
size=1296
size=1013
size=1741
size=1158
size=1000
size=1000
size=1040
size=1000
  • 设置JVM参数的运行结果
    可以看出存在大量的gc的情况。
2020-10-05T23:16:36.533+0800: [GC (Allocation Failure) [PSYoungGen: 2048K->505K(2560K)] 2048K->901K(9728K), 0.0010584 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.603+0800: [GC (Allocation Failure) [PSYoungGen: 2553K->488K(2560K)] 2949K->1240K(9728K), 0.0008439 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.662+0800: [GC (Allocation Failure) [PSYoungGen: 2534K->489K(2560K)] 3286K->1537K(9728K), 0.0008719 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
size=0
2020-10-05T23:16:36.704+0800: [GC (Allocation Failure) [PSYoungGen: 2537K->504K(2560K)] 3585K->1846K(9728K), 0.0008004 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.715+0800: [GC (Allocation Failure) [PSYoungGen: 2552K->497K(2560K)] 3894K->2567K(9728K), 0.0013183 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.731+0800: [GC (Allocation Failure) [PSYoungGen: 2545K->497K(1536K)] 4615K->2795K(8704K), 0.0013590 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.737+0800: [GC (Allocation Failure) [PSYoungGen: 1521K->608K(2048K)] 3819K->3171K(9216K), 0.0011437 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.742+0800: [GC (Allocation Failure) [PSYoungGen: 1632K->352K(2048K)] 4195K->3027K(9216K), 0.0007087 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.744+0800: [GC (Allocation Failure) [PSYoungGen: 1376K->416K(2048K)] 4051K->3211K(9216K), 0.0005345 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.748+0800: [GC (Allocation Failure) [PSYoungGen: 1440K->96K(2048K)] 4235K->2987K(9216K), 0.0007186 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.750+0800: [GC (Allocation Failure) [PSYoungGen: 1120K->288K(2048K)] 4011K->3203K(9216K), 0.0007719 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.752+0800: [GC (Allocation Failure) [PSYoungGen: 1312K->320K(2048K)] 4227K->3483K(9216K), 0.0007032 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.756+0800: [GC (Allocation Failure) [PSYoungGen: 1344K->224K(2048K)] 4507K->3443K(9216K), 0.0005187 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.758+0800: [GC (Allocation Failure) [PSYoungGen: 1248K->384K(2048K)] 4467K->3683K(9216K), 0.0006254 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
size=1881
2020-10-05T23:16:36.759+0800: [GC (Allocation Failure) [PSYoungGen: 1408K->352K(2048K)] 4707K->3795K(9216K), 0.0007957 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.762+0800: [GC (Allocation Failure) [PSYoungGen: 1376K->352K(2048K)] 4819K->3963K(9216K), 0.0010801 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.766+0800: [GC (Allocation Failure) [PSYoungGen: 1376K->320K(2048K)] 4987K->4019K(9216K), 0.0005472 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.768+0800: [GC (Allocation Failure) [PSYoungGen: 1344K->416K(2048K)] 5043K->4251K(9216K), 0.0009169 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.770+0800: [GC (Allocation Failure) [PSYoungGen: 1440K->384K(2048K)] 5275K->4491K(9216K), 0.0009019 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.774+0800: [GC (Allocation Failure) [PSYoungGen: 1408K->256K(2048K)] 5515K->4443K(9216K), 0.0006507 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.776+0800: [GC (Allocation Failure) [PSYoungGen: 1280K->448K(2048K)] 5467K->4699K(9216K), 0.0005954 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.777+0800: [GC (Allocation Failure) [PSYoungGen: 1472K->384K(2048K)] 5723K->4787K(9216K), 0.0021349 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.782+0800: [GC (Allocation Failure) [PSYoungGen: 1408K->320K(2048K)] 5811K->4740K(9216K), 0.0010173 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.784+0800: [GC (Allocation Failure) [PSYoungGen: 1344K->320K(2048K)] 5764K->5036K(9216K), 0.0009857 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.788+0800: [GC (Allocation Failure) [PSYoungGen: 1344K->192K(2048K)] 6060K->4964K(9216K), 0.0005246 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.789+0800: [GC (Allocation Failure) [PSYoungGen: 1216K->416K(2048K)] 5988K->5316K(9216K), 0.0008134 secs] [Times: user=0.05 sys=0.00, real=0.00 secs] 
size=2330
2020-10-05T23:16:36.791+0800: [GC (Allocation Failure) [PSYoungGen: 1440K->448K(2048K)] 6340K->5652K(9216K), 0.0007411 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.794+0800: [GC (Allocation Failure) [PSYoungGen: 1472K->224K(2048K)] 6676K->5508K(9216K), 0.0006578 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.796+0800: [GC (Allocation Failure) [PSYoungGen: 1248K->352K(2048K)] 6532K->5716K(9216K), 0.0008119 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.798+0800: [GC (Allocation Failure) [PSYoungGen: 1376K->128K(2048K)] 6740K->5628K(9216K), 0.0006175 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.800+0800: [GC (Allocation Failure) [PSYoungGen: 1152K->384K(2048K)] 6652K->5932K(9216K), 0.0006835 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.803+0800: [GC (Allocation Failure) [PSYoungGen: 1408K->192K(2048K)] 6956K->5828K(9216K), 0.0005124 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.805+0800: [GC (Allocation Failure) [PSYoungGen: 1216K->416K(2048K)] 6852K->6116K(9216K), 0.0006274 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.806+0800: [GC (Allocation Failure) [PSYoungGen: 1440K->384K(2048K)] 7140K->6252K(9216K), 0.0011216 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.809+0800: [GC (Allocation Failure) [PSYoungGen: 1408K->224K(2048K)] 7276K->6124K(9216K), 0.0006886 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.810+0800: [GC (Allocation Failure) [PSYoungGen: 1248K->320K(2048K)] 7148K->6364K(9216K), 0.0008217 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.813+0800: [GC (Allocation Failure) [PSYoungGen: 1344K->192K(2048K)] 7388K->6332K(9216K), 0.0004124 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.814+0800: [GC (Allocation Failure) [PSYoungGen: 1216K->352K(2048K)] 7356K->6572K(9216K), 0.0004662 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
size=1687
2020-10-05T23:16:36.816+0800: [GC (Allocation Failure) [PSYoungGen: 1376K->288K(2048K)] 7596K->6636K(9216K), 0.0005464 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.817+0800: [GC (Allocation Failure) [PSYoungGen: 1312K->448K(2048K)] 7660K->7028K(9216K), 0.0006981 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.820+0800: [GC (Allocation Failure) [PSYoungGen: 1472K->224K(2048K)] 8052K->6852K(9216K), 0.0003800 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.820+0800: [GC (Allocation Failure) [PSYoungGen: 1248K->416K(2048K)] 7876K->7132K(9216K), 0.0004579 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.821+0800: [GC (Allocation Failure) [PSYoungGen: 1440K->416K(2048K)] 8156K->7276K(9216K), 0.0004899 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.822+0800: [GC (Allocation Failure) [PSYoungGen: 1440K->448K(2048K)] 8300K->7516K(9216K), 0.0006230 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.823+0800: [Full GC (Ergonomics) [PSYoungGen: 448K->0K(2048K)] [ParOldGen: 7068K->2651K(7168K)] 7516K->2651K(9216K), [Metaspace: 5355K->5355K(1056768K)], 0.0103044 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] 
2020-10-05T23:16:36.835+0800: [GC (Allocation Failure) [PSYoungGen: 1024K->256K(2048K)] 3675K->2907K(9216K), 0.0004646 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.836+0800: [GC (Allocation Failure) [PSYoungGen: 1280K->288K(2048K)] 3931K->3091K(9216K), 0.0004958 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.838+0800: [GC (Allocation Failure) [PSYoungGen: 1312K->256K(2048K)] 4115K->3107K(9216K), 0.0003793 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.839+0800: [GC (Allocation Failure) [PSYoungGen: 1280K->160K(2048K)] 4131K->3083K(9216K), 0.0003516 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.840+0800: [GC (Allocation Failure) [PSYoungGen: 1184K->288K(2048K)] 4107K->3299K(9216K), 0.0004385 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.841+0800: [GC (Allocation Failure) [PSYoungGen: 1312K->416K(2048K)] 4323K->3539K(9216K), 0.0004211 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
size=1919
2020-10-05T23:16:36.842+0800: [GC (Allocation Failure) [PSYoungGen: 1440K->384K(2048K)] 4563K->3595K(9216K), 0.0005799 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.843+0800: [GC (Allocation Failure) [PSYoungGen: 1408K->352K(2048K)] 4619K->3659K(9216K), 0.0004381 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.844+0800: [GC (Allocation Failure) [PSYoungGen: 1376K->352K(2048K)] 4683K->3803K(9216K), 0.0004109 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.845+0800: [GC (Allocation Failure) [PSYoungGen: 1376K->288K(2048K)] 4827K->3891K(9216K), 0.0004922 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.846+0800: [GC (Allocation Failure) [PSYoungGen: 1312K->320K(2048K)] 4915K->4043K(9216K), 0.0004504 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.847+0800: [GC (Allocation Failure) [PSYoungGen: 1344K->384K(2048K)] 5067K->4339K(9216K), 0.0004828 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.849+0800: [GC (Allocation Failure) [PSYoungGen: 1408K->224K(2048K)] 5363K->4235K(9216K), 0.0003552 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.850+0800: [GC (Allocation Failure) [PSYoungGen: 1248K->288K(2560K)] 5259K->4339K(9728K), 0.0003425 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.851+0800: [GC (Allocation Failure) [PSYoungGen: 1824K->384K(2048K)] 5875K->4499K(9216K), 0.0004745 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.852+0800: [GC (Allocation Failure) [PSYoungGen: 1920K->320K(2560K)] 6035K->4563K(9728K), 0.0004855 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
size=1731
2020-10-05T23:16:36.853+0800: [GC (Allocation Failure) [PSYoungGen: 2368K->352K(2560K)] 6611K->4699K(9728K), 0.0004974 secs] [Times: user=0.11 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.855+0800: [GC (Allocation Failure) [PSYoungGen: 2400K->160K(2560K)] 6747K->4579K(9728K), 0.0004259 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.856+0800: [GC (Allocation Failure) [PSYoungGen: 2208K->160K(2560K)] 6627K->4587K(9728K), 0.0004172 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.858+0800: [GC (Allocation Failure) [PSYoungGen: 2208K->480K(1536K)] 6635K->4971K(8704K), 0.0005033 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.859+0800: [GC (Allocation Failure) [PSYoungGen: 1504K->448K(2048K)] 5995K->4971K(9216K), 0.0004824 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.860+0800: [GC (Allocation Failure) [PSYoungGen: 1472K->320K(2048K)] 5995K->5067K(9216K), 0.0005029 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.861+0800: [GC (Allocation Failure) [PSYoungGen: 1344K->192K(2048K)] 6091K->4995K(9216K), 0.0003887 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.862+0800: [GC (Allocation Failure) [PSYoungGen: 1216K->192K(2048K)] 6019K->5003K(9216K), 0.0003710 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.863+0800: [GC (Allocation Failure) [PSYoungGen: 1216K->224K(2048K)] 6027K->5043K(9216K), 0.0003224 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
size=1243
2020-10-05T23:16:36.864+0800: [GC (Allocation Failure) [PSYoungGen: 1248K->224K(2048K)] 6067K->5051K(9216K), 0.0003789 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.865+0800: [GC (Allocation Failure) [PSYoungGen: 1248K->224K(2048K)] 6075K->5067K(9216K), 0.0003639 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.866+0800: [GC (Allocation Failure) [PSYoungGen: 1248K->384K(2048K)] 6091K->5235K(9216K), 0.0004452 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.867+0800: [GC (Allocation Failure) [PSYoungGen: 1408K->288K(2048K)] 6259K->5219K(9216K), 0.0004215 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.868+0800: [GC (Allocation Failure) [PSYoungGen: 1312K->320K(2560K)] 6243K->5419K(9728K), 0.0004705 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.870+0800: [GC (Allocation Failure) [PSYoungGen: 2368K->480K(2560K)] 7467K->5675K(9728K), 0.0005566 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.872+0800: [GC (Allocation Failure) [PSYoungGen: 2528K->224K(1536K)] 7723K->5539K(8704K), 0.0004365 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.873+0800: [GC (Allocation Failure) [PSYoungGen: 1248K->224K(2048K)] 6563K->5611K(9216K), 0.0004271 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.874+0800: [GC (Allocation Failure) [PSYoungGen: 1248K->128K(2048K)] 6635K->5587K(9216K), 0.0004824 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.875+0800: [GC (Allocation Failure) [PSYoungGen: 1152K->128K(2048K)] 6611K->5627K(9216K), 0.0003915 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
size=1032
2020-10-05T23:16:36.877+0800: [GC (Allocation Failure) [PSYoungGen: 1152K->160K(2048K)] 6651K->5699K(9216K), 0.0003860 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.878+0800: [GC (Allocation Failure) [PSYoungGen: 1184K->192K(2048K)] 6723K->5763K(9216K), 0.0003338 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.878+0800: [GC (Allocation Failure) [PSYoungGen: 1216K->256K(2560K)] 6787K->5851K(9728K), 0.0004330 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.880+0800: [GC (Allocation Failure) [PSYoungGen: 2304K->160K(2560K)] 7899K->5827K(9728K), 0.0003706 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.882+0800: [GC (Allocation Failure) [PSYoungGen: 2208K->416K(1536K)] 7875K->6155K(8704K), 0.0005144 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.883+0800: [GC (Allocation Failure) [PSYoungGen: 1440K->384K(2048K)] 7179K->6315K(9216K), 0.0005365 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.884+0800: [GC (Allocation Failure) [PSYoungGen: 1408K->288K(2048K)] 7339K->6387K(9216K), 0.0003860 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.885+0800: [GC (Allocation Failure) [PSYoungGen: 1312K->288K(2048K)] 7411K->6443K(9216K), 0.0003820 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.887+0800: [GC (Allocation Failure) [PSYoungGen: 1312K->192K(2560K)] 7467K->6419K(9728K), 0.0004816 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
size=1053
2020-10-05T23:16:36.888+0800: [GC (Allocation Failure) [PSYoungGen: 2240K->160K(2560K)] 8467K->6435K(9728K), 0.0006017 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.890+0800: [GC (Allocation Failure) [PSYoungGen: 2208K->416K(1536K)] 8483K->6787K(8704K), 0.0004729 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.891+0800: [GC (Allocation Failure) [PSYoungGen: 1440K->160K(2048K)] 7811K->6579K(9216K), 0.0006171 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.893+0800: [GC (Allocation Failure) [PSYoungGen: 1184K->160K(2560K)] 7603K->6635K(9728K), 0.0004057 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.894+0800: [GC (Allocation Failure) [PSYoungGen: 1696K->352K(2048K)] 8171K->6899K(9216K), 0.0004843 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.895+0800: [GC (Allocation Failure) [PSYoungGen: 1888K->512K(2048K)] 8435K->7147K(9216K), 0.0005641 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.896+0800: [GC (Allocation Failure) [PSYoungGen: 1536K->384K(2048K)] 8171K->7155K(9216K), 0.0005914 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.897+0800: [GC (Allocation Failure) [PSYoungGen: 1408K->416K(2048K)] 8179K->7251K(9216K), 0.0005803 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.899+0800: [GC (Allocation Failure) [PSYoungGen: 1440K->384K(2048K)] 8275K->7467K(9216K), 0.0005515 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.899+0800: [Full GC (Ergonomics) [PSYoungGen: 384K->0K(2048K)] [ParOldGen: 7083K->2668K(7168K)] 7467K->2668K(9216K), [Metaspace: 5387K->5387K(1056768K)], 0.0056363 secs] [Times: user=0.13 sys=0.00, real=0.01 secs] 
2020-10-05T23:16:36.906+0800: [GC (Allocation Failure) [PSYoungGen: 1024K->192K(2048K)] 3692K->2860K(9216K), 0.0004464 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
size=1196
2020-10-05T23:16:36.907+0800: [GC (Allocation Failure) [PSYoungGen: 1216K->192K(2048K)] 3884K->2916K(9216K), 0.0003492 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.908+0800: [GC (Allocation Failure) [PSYoungGen: 1216K->160K(2048K)] 3940K->2932K(9216K), 0.0004768 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.909+0800: [GC (Allocation Failure) [PSYoungGen: 1184K->224K(2048K)] 3956K->3092K(9216K), 0.0005199 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.911+0800: [GC (Allocation Failure) [PSYoungGen: 1248K->224K(2048K)] 4116K->3156K(9216K), 0.0003962 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.912+0800: [GC (Allocation Failure) [PSYoungGen: 1248K->192K(2048K)] 4180K->3188K(9216K), 0.0004381 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.913+0800: [GC (Allocation Failure) [PSYoungGen: 1216K->224K(2560K)] 4212K->3260K(9728K), 0.0003631 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.914+0800: [GC (Allocation Failure) [PSYoungGen: 1760K->288K(2048K)] 4796K->3380K(9216K), 0.0004275 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.915+0800: [GC (Allocation Failure) [PSYoungGen: 1823K->480K(1536K)] 4916K->3684K(8704K), 0.0005748 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.916+0800: [GC (Allocation Failure) [PSYoungGen: 1504K->224K(2048K)] 4708K->3524K(9216K), 0.0004867 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.917+0800: [GC (Allocation Failure) [PSYoungGen: 1248K->192K(2048K)] 4548K->3548K(9216K), 0.0003654 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2020-10-05T23:16:36.918+0800: [GC (Allocation Failure) [PSYoungGen: 1216K->288K(2048K)] 4572K->3692K(9216K), 0.0004792 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
size=1379
Heap
 PSYoungGen      total 2048K, used 791K [0x00000000ffd00000, 0x0000000100000000, 0x0000000100000000)
  eden space 1024K, 49% used [0x00000000ffd00000,0x00000000ffd7dfb8,0x00000000ffe00000)
  from space 1024K, 28% used [0x00000000ffe00000,0x00000000ffe48000,0x00000000fff00000)
  to   space 512K, 0% used [0x00000000fff80000,0x00000000fff80000,0x0000000100000000)
 ParOldGen       total 7168K, used 3404K [0x00000000ff600000, 0x00000000ffd00000, 0x00000000ffd00000)
  object space 7168K, 47% used [0x00000000ff600000,0x00000000ff9533a8,0x00000000ffd00000)
 Metaspace       used 5414K, capacity 5602K, committed 5888K, reserved 1056768K
  class space    used 599K, capacity 673K, committed 768K, reserved 1048576K

3、分析

Caffeine 基于大小的淘汰机制的原理,是通过线程池的方式来异步执行清理任务的。所以上面的验证代码中,put大量不同key的情况下,清理任务可能出现堆积,也就是说极端情况下会出现缓存项未被及时清理掉,而占用大量内存的情况出现。
实际的表现是缓存对象会从Eden区进入到Old区,以至于Old区内存飙升。导致频繁的YoungGC和FullGC,甚至最终出现OOM。

结合业务场景来分析,对于命中率极低的业务场景,使用本地缓存是不合适的,因为这种场景使用本地缓存,根本没有利用本地缓存的特性,请求还是大量的穿透到了下游的redis或db上,同时还多存储了一份数据,浪费了空间,所以本地缓存不是所有场景都适用的,使用前一定要结合业务特性具体分析。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Caffeine本地缓存适用于以下场景: 1. 提升应用性能:Caffeine本地缓存可以将频繁访问的数据缓存在内存中,以减少对底层数据源的访问次数,从而提高应用的性能和响应速度。 2. 降低系统负载:通过使用Caffeine本地缓存,可以避免频繁地从数据库或其他外部数据源中读取数据,减少了对外部系统的访问,从而降低了系统的负载。 3. 数据共享与共享状态管理:Caffeine本地缓存可以用于在应用内部共享数据,减少重复计算和查询的开销。同时,它也可以用于管理应用中的共享状态,确保多个线程或进程之间的数据一致性。 4. 缓存数据的有效期管理:Caffeine本地缓存提供了对缓存数据有效期的管理,可以根据需求设置缓存过期时间,以确保缓存数据的及时更新和一致性。 5. 缓解外部服务的压力:对于一些需要频繁调用外部服务的场景,可以使用Caffeine本地缓存缓存外部服务的响应结果,减少对外部服务的调用次数,降低对外部服务的压力。 总之,Caffeine本地缓存适用于需要提升应用性能、降低系统负载、数据共享与共享状态管理、缓存数据有效期管理和缓解外部服务压力的场景。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Caffeine一级缓存介绍和应用](https://blog.csdn.net/u011507134/article/details/127107322)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白云coy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值