• JVM学习分享-练习题


    package org.fenixsoft.clazz;

    public class TestClass {
    private int m;

    public int inc() {
    return m + 1;
    }
    }


    //----------- javap -verbose TestClass


    package zero.desk.metaspace;

    import org.springframework.cglib.proxy.Enhancer;
    import org.springframework.cglib.proxy.MethodInterceptor;

    /**
    * @author:Zero
    * @Description:
    * @since 2019/6/11.
    * 练习1
    * VM Options:-XX:MetaspaceSize=10M -XX:MaxMetaspaceSize=10M
    */
    public class MetaspaceOutmemory {
    public static void main(String[] args) {
    try {
    System.out.println("MetaspaceOOM.java");
    while (true) {
    Enhancer enhancer = new Enhancer();
    enhancer.setSuperclass(OOMObject.class);
    enhancer.setUseCache(false);
    enhancer.setCallback(
    (MethodInterceptor) (obj, method, args1, methodProxy) -> methodProxy.invokeSuper(obj, args1)
    );
    enhancer.create();
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    static class OOMObject {
    }
    }

    //------------------
    package zero.desk.metaspace;

    import java.util.ArrayList;
    import java.util.List;

    /**
    * @author:Zero
    * @Description:
    * @since 2019/6/11.
    * 练习2
    * VM Options:-Xmx1M -Xms1M
    */
    public class StringOutmemory {
    static String base = "string";

    public static void main(String[] args) {
    try {
    Thread.sleep(1000);
    List<String> list = new ArrayList<String>();
    for (int i = 0; i < Integer.MAX_VALUE; i++) {
    String str = base + base;
    base = str;
    list.add(str.intern());
    }
    }catch (Exception e) {
    e.printStackTrace();
    }

    }
    }

    //-------------
    package zero.desk.gc;

    /**
    * @author Zero
    * @since 2019-09-08.
    * Description:使用默认垃圾收集器,Parallel Scavenge + Parallel Old
    * 练习3
    * VM Options:-XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintGCDetails
    */
    public class ReferenceCountingGC {
    public Object instance = null;
    private static final int ONE_MB = 1024 * 1024;

    private byte[] bigSize = new byte[2 * ONE_MB];

    public static void main(String[] args) throws InterruptedException {
    Thread.sleep(1000);
    testGC();
    Thread.sleep(1000);
    }

    public static void testGC() {
    ReferenceCountingGC objA = new ReferenceCountingGC();
    ReferenceCountingGC objB = new ReferenceCountingGC();
    objA.instance = objB;
    objB.instance = objA;

    objA = null;
    objB = null;

    System.gc();
    }
    }

    //-------------
    package zero.desk.gc;

    /**
    * @author Zero
    * @since 2019-09-08.
    * Description:使用CMS收集器,ParNew + CMS
    * 练习4
    * VM Options:-XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+PrintClassHistogram -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC
    */
    public class ReferenceCountingGCOpen {
    public Object instance = null;
    private static final int ONE_MB = 1024 * 1024;

    private byte[] bigSize = new byte[2 * ONE_MB];

    public static void main(String[] args) throws InterruptedException {
    Thread.sleep(2000);
    testGC();
    Thread.sleep(1000);
    }

    public static void testGC() {
    ReferenceCountingGCOpen objA = new ReferenceCountingGCOpen();
    ReferenceCountingGCOpen objB = new ReferenceCountingGCOpen();
    objA.instance = objB;
    objB.instance = objA;

    objA = null;
    objB = null;

    System.gc();
    }
    }

    //--------------
    package zero.desk.constantpool;

    /**
    * @author Zero
    * @since 2019-09-08.
    * Description:
    * 练习5
    * javap -verbose ConstantPool
    */
    public class ConstantPool extends C implements A,B{
    private String str = "test string";
    private final int a = 10;
    private final long b = 10;
    private final long bb = 100;
    private int c = 11;
    private float d = 12f;
    private float e = 12f;
    private double ee = 12f;

    private int m;

    public int inc() {
    return m + 1;
    }
    }
  • 相关阅读:
    JS如何判断滚动条是否滚到底部滚动加载瀑布流下拉刷新
    jmeter-22-监控方案-nMon
    jmeter-21-监控方案-severAgent监控
    jmeter-19-慢查询
    jmeter-18-性能监控-Grafana的安装和使用指南(windows)-01
    jmeter-17-性能项目分析与调优实战--场景设置
    jmeter-16-逻辑控制器
    setInterval, setTimeout, requestAnimationFrame 详细说明
    Http代理服务器录制
    康复训练
  • 原文地址:https://www.cnblogs.com/DeskZero/p/11537520.html
Copyright © 2020-2023  润新知