博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDK 1.8 JVM的变化
阅读量:6910 次
发布时间:2019-06-27

本文共 1014 字,大约阅读时间需要 3 分钟。

前言:

1、什么是JVM

  JVM的全称是 Java Virtual Machine(Java虚拟机),它通过模拟一个计算机来达到一个计算机所具有的功能。

  Java和实体计算机一样也必须有一套合适的指令集,这个指令集能够被JVM解析执行,这个指令集我们称为JVM字节码指令集,符合class文件规范的字节码都可以被JVM解释执行。

JDK 1.7及之前方法区存放的数据有类信息(类名,修饰符,字段描述,方法描述等),常量,静态变量,即时编译后的class文件。

方法区中还包含有常量池:常量池中主要有字面量和符号引用(字面量如:文本字符串,声明为final的常量值;符号引用包括了三种常量,分别是:类和接口的全限定名,字段的名称和描述符,方法的名称和修饰符)。

 

2、为什么取消方法区

  1、它在启动时固定大小,很难进行调优,并且FullGC时会移动类元信息

  2、类及方法的信息等比较难确定大小,因此对永久代的大小指定比较困难

  3、在某些场景下,如果动态加载类过多,容易造成Perm区的OOM。

  4、字符串存在方法区中,容易出现性能问题和内存溢出

  5、永久代GC垃圾回收效率偏低

 

3、元空间

JDK 1.8里Perm区中的所有内容中字符串常量移至堆内存,其他内容如类元信息、字段、静态属性、方法、常量等都移动到元空间内。

元空间(MetaSpace)不在堆内存上,而是直接占用的本地内存。因此元空间的大小仅受本地内存限制。也可通过参数来设定元空间的大小

-XX:MetaSpaceSize  初始元空间大小

-XX:MaxMetaSpaceSize  最大元空间大小

除了上面两个指定大小的选项以外,还有两个与 GC 相关的属性:

  -XX:MinMetaspaceFreeRatio,在GC之后,最小的Metaspace剩余空间容量的百分比,减少为分配空间所导致的垃圾收集
  -XX:MaxMetaspaceFreeRatio,在GC之后,最大的Metaspace剩余空间容量的百分比,减少为释放空间所导致的垃圾收集

元空间的特点:

1、每个加载器有专门的存储空间。

2、不会单独回收某个类。
3、元空间里的对象的位置是固定的。
4、如果发现某个加载器不再存货了,会把相关的空间整个回收。

转载于:https://www.cnblogs.com/yangyongjie/p/10646255.html

你可能感兴趣的文章
java基础思维导图大全
查看>>
C# 面向对象7 命名空间
查看>>
MySQL单机上多实例安装
查看>>
java8 增强的Iterator遍历集合元素
查看>>
Codeforces Round #566 (Div. 2) B. Plus from Picture
查看>>
Linux命令(23)grep命令的使用
查看>>
自己动手制作一个本地的yum仓库
查看>>
2015年毕业生收到的offer和薪资透露
查看>>
新手老手都离不开八大开发工具
查看>>
Ubuntu下用命令行快速打开各类型文件(转)
查看>>
C语言程序设计_zju——第3周编程练习1_时间换算
查看>>
Nodejs调用Aras Innovator服务,处理AML并返回AML
查看>>
纯数学教程 Page 324 正项级数绝对收敛的一种判别法
查看>>
Excel自定义函数开发手记
查看>>
Shell编程练习
查看>>
Magento多语言设置——优化前台与后台实现方法
查看>>
如何修改遗失的MySQL的ROOT用户密码
查看>>
leetcode121买股票
查看>>
搭建dubbo+zookeeper+dubboadmin分布式服务框架(windows平台下)
查看>>
Python利用带权重随机数解决抽奖和游戏爆装备问题
查看>>