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;
}
}

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. 从零开始入门 K8s | 手把手带你理解 etcd

    作者 | 曾凡松(逐灵) 阿里云容器平台高级技术专家 本文整理自<CNCF x Alibaba 云原生技术公开课>第 16 讲. 导读:etcd 是用于共享配置和服务发现的分布式.一致性的 ...

  2. python BeautifulSoup4 获取 script 节点问题

    在爬取12306站点名时发现,BeautifulSoup检索不到station_version的节点 因为script标签在</html>之外,如果用‘lxml’解析器会忽略这一部分,而使 ...

  3. hibernate查询方式(四)

    ---恢复内容开始--- 1.mysql中的多表联合查询 ****/*内连接查询*/  只显示两个表有关联的记录 //第一种 SELECT * FROM Class c ,Student s WHER ...

  4. 决策树(三)决策树与Jupyter小部件的交互式可视化

    简介 决策树是广泛用于分类和回归任务的监督模型. 在本文中,我们将讨论决策树分类器以及如何动态可视化它们. 这些分类器在训练数据上构建一系列简单的if / else规则,通过它们预测目标值.  在本演 ...

  5. sql service 从创建访问用户到数据库访问 【SQL】

    create login [LoginMame] with password=[Pwd]--创建数据库登陆用户 create user [DBLoginName] for login [LoginMa ...

  6. Appium之实操(了解配置项)

    使用Appium,测试对象APP的运行环境有两种:① 真实设备 如手机  ②模拟器 如夜神 连接真实设备: - 进入开发者模式,启动usb调试 - 在电脑上 执行adb命令  adb devices ...

  7. docker入门-安装篇

    一.docker介绍 1:docker官网 www.docker.com 2:github  https://github.com/docker/docker.github.io 3:开源的容器引擎, ...

  8. nginx之 nginx限流配置

    limit_req zone=req_zone;严格依照在limti_req_zone中配置的rate来处理请求超过rate处理能力范围的,直接drop表现为对收到的请求无延时limit_req zo ...

  9. .net下DllImport的一个小问题

    最近搞几个PInvoke几个DLL, 在.net 2.0下木有问题, 跑的很好 如下: [DllImport( "tjo.dll" )] private static extern ...

  10. re常用模块

    re模块:从字符串里面找到特定的字符串 re的基本语法(匹配规则) import re s = '王大炮打炮被大炮打死了 王大炮打炮被大炮打死了' ^:开头 print(re.findall('^王大 ...