jdk8永久代从方法区移除的验证
/**
* 测试使用jdk8中是否仍然可以使用永久代
* jvm options
* -Xms20m -Xmx20m -Xmn10m -XX:PermSize=10m -XX:MaxPermSize=10m -XX:+PrintGCDetails
*
* 结果运行提示:
* Java HotSpot(TM) Client VM warning: ignoring option PermSize=10m; support was removed in 8.0
* Java HotSpot(TM) Client VM warning: ignoring option MaxPermSize=10m; support was removed in 8.0
* 结论: jdk8 hotspot已经不再使用方法区作为永久代
*
* 通过jvm参数增加选项:-XX:SurvivorRatio=65535 再进行测试
*
* @author zhuotao
*
*/
public class PermGenTest {
private static final int _1M = 1024 * 1024;
public static void main(String[] args) throws InterruptedException {
byte[] s0 = new byte[2 * _1M];
byte[] s1 = new byte[2 * _1M];
byte[] s2 = new byte[2 * _1M];
byte[] s3 = new byte[2 * _1M];
byte[] s4 = new byte[2 * _1M];
// 以上总共增加10M,触发minor GC, 通过GC不难发现,这10M的内存有eden和tenured分摊
// 此时,新增一个1M的内存 , 再次触发minor GC
byte[] s5 = new byte[1 * _1M];
// 新增一个1M的内存,由eden去进行担保
// 此时再新增一个7M的对象,将导致OOM的发生,Eden区无法存储。eden仍然分担3M的内容,而剩下的15M老年代担保失败,触发Full GC,GC后仍然无法存储,发生OOM
byte[] s6 = new byte[7 * _1M];
}
}
jdk8永久代从方法区移除的验证的更多相关文章
- JDK8的JVM内存结构,元空间替代永久代成为方法区及常量池的变化
JVM的知识这里总结的很详细:https://github.com/doocs/jvm/blob/master/README.md,因此在本博客也不会再对其中的东西重复总结了. 现在很多文章关于JVM ...
- 常量池、perm(持久代)、方法区、栈
常量池.perm(持久代).方法区.栈 常量池指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据. 除了包含代码中所定义的各种基本类型(如:int.long等等)和对象型(如St ...
- jdk8 永久代变更
java8 去掉了永久代permgen(又称非堆,其实也是堆的一部分),类的方法代码,常亮,方法名,静态变量等存放在永久代中 改为使用元空间 Metaspace , Metaspace 不在是堆的一部 ...
- jdk源码剖析五:JDK8-废弃永久代(PermGen)迎来元空间(Metaspace)
目录 1.背景 2.为什么废弃永久代(PermGen) 3.深入理解元空间(Metaspace) 4.总结 ========正文分割线===== 一.背景 1.1 永久代(PermGen)在哪里? 根 ...
- JDK8-废弃永久代(PermGen)迎来元空间(Metaspace)
1.背景 2.为什么废弃永久代(PermGen) 3.深入理解元空间(Metaspace) 4.总结 ========正文分割线===== 一.背景 1.1 永久代(PermGen)在哪里? 根据,h ...
- JVM深入:JDK8-废弃永久代(PermGen)迎来元空间(Metaspace)(转)
转载自:https://www.cnblogs.com/yulei126/p/6777323.html 1.背景 2.为什么废弃永久代(PermGen) 3.深入理解元空间(Metaspace) 4. ...
- 深入理解java虚拟机---JDK8-废弃永久代(PermGen)迎来元空间(Metaspace)(十二)
引用:https://www.cnblogs.com/yulei126/p/6777323.html JDK8-废弃永久代(PermGen)迎来元空间(Metaspace) 1.背景 2.为什么废 ...
- JVM虚拟机21: 1.8中废弃永久代(PermGen)迎来元空间(Metaspace)
1.JDK8永久代的废弃 JDK8 永久代变化如下图: 1.新生代:Eden+From Survivor+To Survivor 2.老年代:OldGen 3.永久代(方法区的实现) : PermGe ...
- java虚拟机-JDK8-废弃永久代(PermGen)迎来元空间(Metaspace)
一.背景 1.1 永久代(PermGen)在哪里? 根据,hotspot jvm结构如下(虚拟机栈和本地方法栈合一起了): 上图引自网络,但有个问题:方法区和heap堆都是线程共享的内存区域. 关于方 ...
随机推荐
- Delphi 日志的方法 Log
写一个日志的函数,只需要传内容进去即可,自动记录时间的,日志保存在'c:\ErpRunLog.txt'下procedure writeWorkLog(sqlstr: string);var filev ...
- apache 创建虚拟目录
<VirtualHost *:83> DocumentRoot "E:\PhpProjects"</VirtualHost><Directory ...
- Android 各版本信息 (维基百科)
The following tables show the release dates and key features of all Android operating system updates ...
- 通过百度获取IP地址对应的经纬度
/** * 获取指定IP对应的经纬度(为空返回当前机器经纬度) * * @param ip * @return */ public static String[] getIPXY(String ip ...
- html自定义提示框
自定义html提示框比较令人困惑的就是编写三角形的样式:以前的实现方式是在标签内使用span标签来实现.不过现在有了css提供的两个为类:before,:after之后,可以不用再内置span标签了: ...
- BitmapFactory.decodeByteArray() 返回null,分析与解决
问题描述:用android自带的Camera获取图片,上传至远程数据库中(mysql),以BLOB格式存储, 但在提取图片时,始终无法在android界面显示,示例代码如下: ..... .... ...
- 字体在Android View中的输出 drawText
Canvas 作为绘制文本时,使用FontMetrics对象,计算位置的坐标. public static class FontMetrics { public flo ...
- 命名空间引用问题 包括找不到ConfigurationManager 这个类
因为SqlConnection类是属于 System.Data.SqlClient命名空间下的, 所以命名空间引用的时候需要加上 System.Data.SqlClient,代码如下: ...
- C# ashx生成的验证码
public void ProcessRequest(HttpContext context) { context.Response.ContentType = "image/jpeg&qu ...
- python的按位运算
#coding=utf-8#"&"按位与运算,是指一个数字转化为二进制,然后这些二进制的数按位来进行与运算a=7&18print a'''首先将7转化为二进制,得到 ...