JDK 1.8 JVM的变化
前言:
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、如果发现某个加载器不再存货了,会把相关的空间整个回收。
JDK 1.8 JVM的变化的更多相关文章
- java入门时的一些基本概念的理解(j2ee,j2se,j2me,jdk,sdk,jre,jvm,跨平台)
首先声明,这篇文章是从网上粘贴过来的.原文地址是:http://www.cnblogs.com/wangaohui/archive/2012/11/28/2791999.html.感觉写的很好,所以粘 ...
- Difference between JDK, JRE and JVM
With Java programming language, the three terms i.e. JDK, JRE and JVM will always be there to unders ...
- JDK分析工具&JVM垃圾回收(转)
转自:http://blog.163.com/itjin45@126/blog/static/10510751320144201519454/ 官方手册:http://docs.oracle.com/ ...
- 在 Linux 中安装 Oracle JDK 8 以及 JVM 的类加载机制
参考资料 该文中的内容来源于 Oracle 的官方文档 Java SE Tools Reference .Oracle 在 Java 方面的文档是非常完善的.对 Java 8 感兴趣的朋友,可以直接找 ...
- J2EE,J2SE,J2ME,JDK,SDK,JRE,JVM区别
转自:http://www.metsky.com/archives/547.html 一.J2EE.J2SE.J2ME区别 J2EE——全称Java 2 Enterprise Edition,是Jav ...
- Java2_java入门时的一些基本概念的理解(j2ee,j2se,j2me,jdk,sdk,jre,jvm,跨平台)
什么是SDK呢? Software Develop Kit的简称,顾名思义就是软件开发包.软件开发商实现底层模块,并对其进行类库封装,配置成高级别的开发环境,为程序员上层的程序开发提供支持.譬如Goo ...
- JDK Tools - jps: JVM 进程状态工具
jps(Java Virtual Machine Process Status Tool) 是 JDK 提供的一个显示当前所有 Java 进程实例的命令. 命令格式 jps [ options ] [ ...
- Error:Could not determine Java version-- 关于Android Studio JDK设置和JVM version设置
最近在装AS的时候遇到一个问题,新建工程后,编译报错,Error:Could not determine Java version 不言而喻:可定是JDK的问题,网上查到2中可能性 第一:就是JDK路 ...
- java学习之Java中JDK,JRE和JVM之间的关系(转载)
最近要重新抓一下java,大量扫技术文档,保存下来供自己查阅.以下转载自http://www.cnblogs.com/xiaofeixiang/p/4085159.html 初学JAVA很容易被其中的 ...
随机推荐
- IIS7设置将域名不带www跳转到带www上
很多朋友在IIS环境中搭建好网站后,习惯性将带www和不带www的域名都绑定到一个网站上,这样做虽然两个域名都能访问,但容易造成权重分散,从而导致网站权重降低.其实我们可以将访问不带www的域名自动跳 ...
- 国外优秀C/C++网站
1.https://en.cppreference.com/w/ 2.https://www.geeksforgeeks.org/ 3.https://www.tutorialspoint.com/c ...
- 星云STS 常用配置
STS4 下载地址:https://spring.io/tools (这个版本没有tomcat插件) STS3 下载地址:https://spring.io/tools3/sts/all ( ...
- idea 配置普通web项目
跟配置maven项目类似 idea 配置 maven 项目 注意点 1.取消第一步 2.添加依赖的时候,如果lib下没有servlet依赖包,可以加个tomcat环境进来编译 ps:在artifact ...
- new和delete操作符
C 语言中提供了 malloc 和 free 两个系统函数, 完成对堆内存的申请和释放.而 C++则提供了两个操作符 new 和 delete. 1. newnew 分配内存空间时, 分配内存空间大 ...
- eclipse is missing required source folder src/test/java
原因:maven的bug,不兼容eclipse 解决方法:右击工程,选择run-->maven-->build重新构建工程,就解决了.
- 印象笔记中的美人鱼 mermaid
美人鱼 mermaid 是印象笔记中Markdown模式下新增的一种代码模式,它能支持更多的高级图表功能,如流程图.甘特图.时序图. 我最喜欢的应该是甘特图,最惊喜的是流程图. 当然,印象笔记还支持其 ...
- Java多线程:Java内存模型
参考资料: 程晓明:Java内存模型 <Java并发编程的艺术> <深入理解Java虚拟机:JVM高级特性与最佳实践>
- py-faster-rcnn 训练参数修改(转)
faster rcnn默认有三种网络模型 ZF(小).VGG_CNN_M_1024(中).VGG16 (大) 训练图片大小为500*500,类别数1. 一. 修改VGG_CNN_M_1024模型配置文 ...
- 【ML入门系列】(二)分类与回归
前言 在机器学习中,“分类”和“回归”这两个词经常听说,但很多时候我们却混为一谈.本文主要从应用场景.训练算法等几个方面来叙述两者的区别. 本质区别 分类和回归的区别在于输出变量的类型.分类的输出是离 ...