前言:

1、什么是JVM

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

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

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

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

2、为什么取消方法区

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

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

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

3、元空间

JDK 1.8之后将运行时常量池移动到堆中,方法区被元空间(MetaSpace)替代。并且元空间不在堆内存上,而是直接占用的本地内存。因此元空间的大小仅受本地内存限制。也可通过参数来设定元空间的大小

-XX:MetaSpaceSize  初始元空间大小

-XX:MaxMetaSpaceSize  最大元空间大小

除了上面两个指定大小的选项以外,还有两个与 GC 相关的属性:
  -XX:MinMetaspaceFreeRatio,在GC之后,最小的Metaspace剩余空间容量的百分比,减少为分配空间所导致的垃圾收集
  -XX:MaxMetaspaceFreeRatio,在GC之后,最大的Metaspace剩余空间容量的百分比,减少为释放空间所导致的垃圾收集

元空间的特点:

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

最新文章

  1. jsp读取properties文件
  2. [Android Pro] http请求中传输base64出现加号变空格的解决办法
  3. Asp.Net正在中止线程引发的问题
  4. ArcGIS的许可文件问题
  5. linux select 学习
  6. HDU 5821 Ball (排序)
  7. 初涉Node.js
  8. dota监测
  9. 虚拟机安装linux系统不能上网解决方法
  10. js和native交互方法浅析
  11. Struts 2 之文件上传
  12. 修改GDAL库支持RPC像方改正模型
  13. jvm GC
  14. HTML/CSS 速写神器 Emmet语法
  15. SAS 对数据的拼接与串接
  16. c/c++的常用函数和STL使用
  17. 使用pandas的部分问题汇总
  18. python实现stack并测试
  19. block详解
  20. 如何使用向量代表文档doc或者句子sentence

热门文章

  1. MySQL server has gone away 的两个最常见的可能性
  2. hadoop HA (no zkfc to stop) DFSZKFailoverController进程没有启动
  3. Eclipse安装Git插件及简单操作
  4. [HDFS Manual] CH6 HDFS Federation
  5. MobaXterm v10.9破解
  6. 类似于c语言读取文件进行解析
  7. HTTP 04 web 服务器
  8. Swagger Annotation 详解
  9. fiddler 使用记录
  10. Aspose.Words使用技巧