JVM补充一
Motivation
2.2 现实使用中易出问题
二、深入理解元空间(Metaspace)3.1元空间的内存大小
3.2常用配置参数
3.3测试并追踪元空间大小 3.3.1.测试字符串常量
public class StringOomMock {[/b]    static String  base = "string";         public static void main(String[] args) {        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());        }    }} | 
在eclipse中选中类--》run configuration-->java application--》new 参数如下:

由于设定了最大内存20M,很快就溢出,如下图:

3.3.2.测试元空间溢出
| 
 | 
package jdk8;
import java.io.File;
import java.lang.management.ClassLoadingMXBean;
import java.lang.management.ManagementFactory;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.List;
/** * * @ClassName:OOMTest * @Description:模拟类加载溢出(元空间oom) * @author diandian.zhang * @date 2017年4月27日上午9:45:40 */public class OOMTest { 
    public static void main(String[] args) { 
        try { 
            //准备url             URL url = new File("D:/58workplace/11study/src/main/java/jdk8").toURI().toURL(); 
            URL[] urls = {url};             //获取有关类型加载的JMX接口             ClassLoadingMXBean loadingBean = ManagementFactory.getClassLoadingMXBean();             //用于缓存类加载器             List<ClassLoader> classLoaders = new ArrayList<ClassLoader>(); 
            while (true) { 
                //加载类型并缓存类加载器实例                 ClassLoader classLoader = new URLClassLoader(urls); 
                classLoaders.add(classLoader);                 classLoader.loadClass("ClassA");                 //显示数量信息(共加载过的类型数目,当前还有效的类型数目,已经被卸载的类型数目)                 System.out.println("total: " + loadingBean.getTotalLoadedClassCount()); 
                System.out.println("active: " + loadingBean.getLoadedClassCount()); 
                System.out.println("unloaded: " + loadingBean.getUnloadedClassCount()); 
            }         } catch (Exception e) { 
            e.printStackTrace();         }     } } | 

JVM补充一的更多相关文章
- JVM补充篇
		
1.对象分配原则 1)对象优先分配在Eden区,如果Eden区没有足够的空间时,虚拟机执行一次Minor GC 2)大对象直接进入老年代(大对象是指需要大量连续内存空间的对象),这样做的目的是避免在E ...
 - JVM 知识点补充——永久代和元空间
		
之前已经讲过了不少有关 JVM 的内容,今天准备将之前没有细讲的部分进行补充,比如:永久代和元空间. 永久代 Java 的内存中有一块称之为方法区的部分,在 JDK8 之前, Hotspot 虚拟机中 ...
 - JVM 专题五:类加载子系统(三)补充内容
		
3. 补充内容 3.1 在jvm中表示两个class对象是否为同一个类的两个必要条件 类的完整类名必须一致,包括包名. 加载这个类的ClassLoader(指ClassLoader实例对象)必须相同 ...
 - <JVM下篇:性能监控与调优篇>补充:使用OQL语言查询对象信息
		
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...
 - <JVM下篇:性能监控与调优篇>补充:浅堆深堆与内存泄露
		
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...
 - JVM学习第三天(JVM的执行子系统)之类加载机制补充
		
昨晚没看完,今天继续 系统的类加载器 对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间.这句话可以表达得更通俗一些: ...
 - JVM运行时数据区--纵向补充--对象的实例化内存布局与访问定位
		
对象的实例化 创建对象的方式 1.new:最常见的方式(本质是构造器) 变形1 : Xxx的静态方法 变形2 : XxBuilder/XxoxFactory的静态方法 2.Class的newInsta ...
 - 深入理解java虚拟机笔记补充-JVM常见参数设置
		
JVM 常见参数设置 内存设置 参数 -Xms:初始堆大小,JVM 启动的时候,给定堆空间大小. -Xmx:最大堆大小,如果初始堆空间不足的时候,最大可以扩展到多少. -Xmn:设置年轻代大小.整个堆 ...
 - JVM垃圾回收补充知识点
		
1. 分代 虚拟机中的共划分为三个代: 年轻代(Young Gen):eden和survivor-8:1:1 年老代(Old Gen):存储大对象,由survivor晋升 永久代(perm Gen): ...
 
随机推荐
- svn服务器搭建与迁移
			
2016-11-21更新: 今天被svn的钩子搞了半天,网上找解决方法都无效,下午被我试出来了,特此记录. 在svn的钩子中可以使用update来更新配置文件,比如ansible的,puppet的,具 ...
 - hdu  acm  2191  悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
			
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2191 题目意思:有 资金 n 和 m 种类型的大米,对第 i 种类型的大米,价格.数量.袋数分别是: ...
 - js获取form的方法
			
先来看下面代码: ? <html> <head> <scirpy> window.onload=function(){ var f1=document.f1; ...
 - [Selenium] Explicit wait 方法
			
(1) new WebDriverWait(driver, 10). until(ExpectedConditions.elementToBeClickable(locator)); (2) ne ...
 - 【扬中集训DAY2T2】 机智的AmyZhi
			
[题目链接] 点击打开链接 [算法] 据说标算是暴力? 从N-200开始搜 不过我用了搜索+一些奇怪的剪枝,也A了.... [代码] 标程 #include<bits/stdc++.h> ...
 - Bootstrap-CSS:表单
			
ylbtech-Bootstrap-CSS:表单 1.返回顶部 1. Bootstrap 表单 在本章中,我们将学习如何使用 Bootstrap 创建表单.Bootstrap 通过一些简单的 HTML ...
 - Python2/3共存,pip2/3共存
			
python2 和 python3设置: 1.安装Python2和3,并添加环境变量: 2.找到python2和python3的安装目录,修改python2中和python3中python.exe和p ...
 - SCUT - 254 - 欧洲爆破 - 概率dp - 状压dp
			
https://scut.online/p/254 思路很清晰,写起来很恶心. #include<bits/stdc++.h> using namespace std; #define l ...
 - Codeforces277A 【dfs联通块】
			
题意: 给出n个人会的语言类型,然后问这n个人里面还需要几个人学习一下语言就可以n个直接互通了.a会1,2,b会2,3,c会4,那么只要C学一下1或者2,或者3就好了...大致就是这个意思. 思路: ...
 - poj2186【利用强连通分量】
			
题意: 有n头奶牛,然后有个规则是A->B,B->C,那么A->C: A觉得B受欢迎,B觉得C受欢迎,那么A觉得C受欢迎: 求:被其他所有牛都欢迎的牛的数量: 思路: 原来的思路: ...