1. package org.fenixsoft.clazz;
  2.  
  3. public class TestClass {
    private int m;
  4.  
  5. public int inc() {
    return m + 1;
    }
    }
  1.  
  2. //----------- javap -verbose TestClass
  3.  
  1. package zero.desk.metaspace;
  2.  
  3. import org.springframework.cglib.proxy.Enhancer;
    import org.springframework.cglib.proxy.MethodInterceptor;
  4.  
  5. /**
    * @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();
    }
    }
  6.  
  7. static class OOMObject {
    }
    }
  8.  
  9. //------------------
  1. package zero.desk.metaspace;
  2.  
  3. import java.util.ArrayList;
    import java.util.List;
  4.  
  5. /**
    * @author:Zero
    * @Description:
    * @since 2019/6/11.
    * 练习2
    * VM Options:-Xmx1M -Xms1M
    */
    public class StringOutmemory {
    static String base = "string";
  6.  
  7. 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();
    }
  8.  
  9. }
    }
  10.  
  11. //-------------
  1. package zero.desk.gc;
  2.  
  3. /**
    * @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;
  4.  
  5. private byte[] bigSize = new byte[2 * ONE_MB];
  6.  
  7. public static void main(String[] args) throws InterruptedException {
    Thread.sleep(1000);
    testGC();
    Thread.sleep(1000);
    }
  8.  
  9. public static void testGC() {
    ReferenceCountingGC objA = new ReferenceCountingGC();
    ReferenceCountingGC objB = new ReferenceCountingGC();
    objA.instance = objB;
    objB.instance = objA;
  10.  
  11. objA = null;
    objB = null;
  12.  
  13. System.gc();
    }
    }
  14.  
  15. //-------------
  1. package zero.desk.gc;
  2.  
  3. /**
    * @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;
  4.  
  5. private byte[] bigSize = new byte[2 * ONE_MB];
  6.  
  7. public static void main(String[] args) throws InterruptedException {
    Thread.sleep(2000);
    testGC();
    Thread.sleep(1000);
    }
  8.  
  9. public static void testGC() {
    ReferenceCountingGCOpen objA = new ReferenceCountingGCOpen();
    ReferenceCountingGCOpen objB = new ReferenceCountingGCOpen();
    objA.instance = objB;
    objB.instance = objA;
  10.  
  11. objA = null;
    objB = null;
  12.  
  13. System.gc();
    }
    }
  14.  
  15. //--------------
  1. package zero.desk.constantpool;
  2.  
  3. /**
    * @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;
  4.  
  5. private int m;
  6.  
  7. public int inc() {
    return m + 1;
    }
    }

JVM学习分享-练习题的更多相关文章

  1. JVM学习分享-思考题

    package zero.desk.stringconstantpool; import org.junit.Test; /** * @author Zero * @since 2019-09-17. ...

  2. JVM学习(4)——全面总结Java的GC算法和回收机制

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: 一些JVM的跟踪参数的设置 Java堆的分配参数 -Xmx 和 –Xms 应该保持一个什么关系,可以让系统的 ...

  3. JVM学习(3)——总结Java内存模型

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: 为什么学习Java的内存模式 缓存一致性问题 什么是内存模型 JMM(Java Memory Model)简 ...

  4. jvm内存JVM学习笔记-引用(Reference)机制

    在写这篇文章之前,xxx已经写过了几篇关于改jvm内存主题的文章,想要了解的朋友可以去翻一下之前的文章 如果你还不了解JVM的基本概念和内存划分,请阅读JVM学习笔记-基础知识和JVM学习笔记-内存处 ...

  5. JVM学习04:类的文件结构

    JVM学习04:类的文件结构 写在前面:本系列分享主要参考资料是  周志明老师的<深入理解Java虚拟机>第二版. 类的文件结构知识要点Xmind梳理

  6. JVM学习03:性能监控工具

    JVM学习03:性能监控工具 写在前面:本系列分享主要参考资料是  周志明老师的<深入理解Java虚拟机>第二版. 性能监控工具知识要点Xmind梳理 案例分析 案例分析1-JPS 案例分 ...

  7. JVM学习02:GC垃圾回收和内存分配

    JVM学习02:GC垃圾回收和内存分配 写在前面:本系列分享主要参考资料是  周志明老师的<深入理解Java虚拟机>第二版. GC垃圾回收和内存分配知识要点Xmind梳理 案例分析1-(G ...

  8. JVM学习01:内存结构

    JVM学习01:内存结构 写在前面:本系列分享主要参考资料是  周志明老师的<深入理解Java虚拟机>第二版. 内存结构知识要点Xmind梳理 案例分析 分析1 package com.h ...

  9. Swagger框架学习分享

    Swagger框架学习分享 转至元数据结尾 Created and last modified by 刘新宇 大约1分钟曾经 pageId=162045803#page-metadata-start& ...

随机推荐

  1. Python爬虫实战之爬取糗事百科段子

    首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致之前的代码没法用了,会导致无法输出和CPU占用过高的 ...

  2. redis--linux环境搭建

    1.redis诞生的背景 在这要从08年开始说起,一个意大利的小伙子创建一个访问网站信息的LLOOGG.COM网站,用来记录网站的访问记录,查看最近一万条访问信息,每次访问都会将数据存入mysql当中 ...

  3. go break的使用

    文章目录 一.踩得坑 二.break的使用 1.break用于for循环 2. break用于select 3.break用于嵌套循环 4.break label . goto label .cont ...

  4. 2019 牛客国庆集训派对day1-C Distinct Substrings(exkmp+概率)

    链接:https://ac.nowcoder.com/acm/contest/1099/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  5. python 金融应用(四)金融时间序列分析基础

    1.1.创建DataFrame df=pd.DataFrame(list(range(10,50,10)),columns=['num'],index=['a','b','c','d']) df Ou ...

  6. 【MYSQL】安装MySQL端口被占用

    出现问题: 安装mysql时,发现端口被占用 解决方法: 方法一: 修改端口号:3308,3309等都可以 方法二: 按键盘"win+r" → 打开 cmd → 输入netstat ...

  7. 第三方OAuth授权登录,QQ、微信(WeChat)、微博、GitHub、码云(Gitee)、淘宝(天猫)、微软(Microsoft )、钉钉、谷歌(Google)、支付宝(AliPay)、StackOverflow

    Netnr.Login 第三方OAuth授权登录 支持第三方登录 三方 参考文档 参考文档 参考文档 参考文档 参考文档 参考文档 参考文档 参考文档 参考文档 参考文档 参考文档 参考文档 安装 ( ...

  8. 大数据学习笔记——Spark工作机制以及API详解

    Spark工作机制以及API详解 本篇文章将会承接上篇关于如何部署Spark分布式集群的博客,会先对RDD编程中常见的API进行一个整理,接着再结合源代码以及注释详细地解读spark的作业提交流程,调 ...

  9. CentOS6和CentOS7进入单用户模式重置root密码

    一.前言 如果在Linux系统下root密码丢失或者需要破解物理机器用户密码,可以通过进入系统单用户模式进行重置root密码.本文介绍CentOS6和CentOS7两个系统版本进行root密码重置. ...

  10. 真伪随机数 ——Random和SecureRandom

    Random Random用来创建伪随机数.所谓伪随机数,是指只要给定一个初始的种子,产生的随机数序列是完全一样的. 要生成一个随机数,可以使用nextInt().nextLong().nextFlo ...