zoukankan      html  css  js  c++  java
  • 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;
    }
    }
  • 相关阅读:
    Extjs4循序渐进(二)——Ext的界面(容器和布局)
    Extjs4循序渐进(一)——开始Ext
    重写jQuery的$字符
    WinForm窗口基础配置
    C# 遍历文件夹图片并用ListView控件展示
    Extjs4循序渐进(三)——表单及表单控件详解一(表单布局和基础控件 Text,TextArea,Number,Checkbox,Radio,Date)
    【ezj】一款国产JavaScript 框架,使用体验
    使用Java语言实现几种常见的排序算法
    http://www4.it168.com/jtzt/shenlan/tech/netdesignp/
    写在前面的话
  • 原文地址:https://www.cnblogs.com/DeskZero/p/11537520.html
Copyright © 2011-2022 走看看