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堆都是线程共享的内存区域. 关于方 ...
随机推荐
- CSU 1111 有三户人家共拥有一座花园,每户人家的太太均需帮忙整理花园。A 太太工作了5 天,B 太太则工作了4 天,才将花园整理完毕。C 太太因为正身怀六甲无法加入她们的行动,所以就打算出90元钱
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82974#problem/D 解题思路:本题的意思就是三位均出90,然后AB按做 ...
- jqGrid中多选
原文地址;http://www.cnblogs.com/josechuanmin/archive/2013/05/19/3087138.html 在jqGrid中设置multiselect: true ...
- Android新浪微博客户端(六)——Home界面的ListView
原文出自:方杰|http://fangjie.info/?p=184转载请注明出处 最终效果演示:http://fangjie.info/?page_id=54该项目代码已经放到github:http ...
- oracle for update和for update nowait
原文地址:http://www.cnblogs.com/quanweiru/archive/2012/11/09/2762223.html 1.for update 和 for update nowa ...
- [Javascript] Advanced Reduce: Flatten, Flatmap and ReduceRight
Learn a few advanced reduction patterns: flatten allows you to merge a set of arrays into a single a ...
- 错误处理:java.lang.NoClassDefFoundError: org/apache/taglibs/standard/tag/rt/core/ForEachTag
在使用JSP.Servlet进行开发时,遇到java.lang.NoClassDefFoundError: org/apache/taglibs/standard/tag/rt/core/ForEac ...
- iOS 在 Xcode 中重命名项目名称
本教程使用的 Xcode 版本是Xcode 6.3.1,网上有好多的教程,都是在 Xcode 4 上做的讲解,现以本文章讲解一下如何在 Xcode 6.3.1 中重命名你的项目名称,包括你的应用名称. ...
- ubuntu 下操作文件夹,出现Permission denied的解决的方法
今天遇到个诡异问题,向一个文件夹(myResources)粘贴文件的时候,出现这样一个提示 Permission denied 是权限没设好,仅仅是拷贝粘贴一个文件,怎么会这样? 解决的办法: $ s ...
- RSA加密解密及数字签名Java实现--转
RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的.当时他们三人都在麻省理工学院 ...
- yii console.php 报错 Property "CConsoleApplication.theme" is not defined.
默认配置的话,是不会出现这个错误的,应该是有人为修改了 yiic.php 这个文件,本来是 $config 载入的应该是 console.php ,人为修改后载入了 main.php 这个配置文件了 ...