首页 > 系统相关 >【JVM】JVM内存模型的演变

【JVM】JVM内存模型的演变

时间:2023-02-13 07:44:55浏览次数:55  
标签:1.7 演变 永久 线程 内存 JVM 方法

1  前言

讲多了Class文件、类加载过程,我们的Class文件就要进到JVM内存里了,那就先来了解下JVM内存模型都进行了哪些演变。

主要演变的就是:1.7、1.8 都是对方法区中的改变

概念的统一:我看一些文章说方法区、有永久代、有元空间这三者的关系是什么呢

(1)方法区可以看作是JVM逻辑上管理一片区域的名字也是概念,可以把它比作成接口

(2)永久代和元空间是对方法区的实现,只不过1.7及以前是永久代,1.8开始永久代被替换成元空间了

我们这里是针对主流的HotSpot的JVM进行的。

2 内存模型演变

每个版本基本都包含五大部分:栈、堆、本地方法栈、方法区、程序计数器

看运行时数据区要以线程的角度去看,其中:栈、本地方法栈、程序计数器都是线程私有,堆和方法区是线程共享的。

2.1 JVM1.6及以前的版本

1.6及以前JVM运行时数据区,方法区叫永久代

2.2 JVM1.7

1.7永久代还存在,但是已经逐步”去永久代“,字符串常量池、静态变量移到堆中。

2.3 JVM1.8及以后

1.8以后,无永久代,类型信息、字段、方法、常量直接保存在元空间,元空间用的是直接内存,字符串常量池和静态变量还是保持在堆中。

 小结:

 

标签:1.7,演变,永久,线程,内存,JVM,方法
From: https://www.cnblogs.com/kukuxjx/p/17113794.html

相关文章

  • JVM垃圾回收 笔记
    垃圾回收算法新生代中因为对象都是“朝生夕死的”,深入理解JVM虚拟机上说98%的对象存活率很低,适用于复制算法,复制算法比较适合用于存活率低的内存区域。它优化了标记/清除......
  • 【JVM】JVM的体系结构
    1 前言Class文件了解过了,那么接下来就要看JVM表演了。JVM,在Java语言可以说是重中之重的存在,没有它Java程序是跑不起来的,Java的一次编译多次运行,也更离不开JVM的存在。......
  • Redis内存淘汰策略
    内存淘汰:就是当redis内存达到设置的阈值时,主动挑选部分key删除以释放内存可以分为两个问题:1,redis什么时候去检查内存够还是不够?2,怎么来决定删除哪些key?(淘汰策略) 1,如......
  • C语言学习:几个常见的内存操作函数
     #include<io_utils.h>#include<string.h>#include<stdlib.h>intmain(){//memchr()//strchr()//memcmp()//strcmp()//memset()char*mem......
  • 前端开发常见应用场景,如何判断是否存在内存泄漏?
    前端项目查看是否有内存泄漏的情况在项目运行中,有时会遇到这样的问题,项目运行时间长了,速度就越来越慢,最后导致页面崩溃。这个时候就需要查看是否有内存泄漏的情况了。怎......
  • JVM概念
    从编译到执行什么是JVM常见的JVM实现JDKJREJVM......
  • 变量及内存分配
    参考资料:1.狄泰软件学院的C语言教程2.《armlink_user_guide》、《ARM®DeveloperSuiteCompilersandLibrariesGuide》、《ARM®DeveloperSuiteLinkerandUtilit......
  • 768~769 MVC_jsp演变历史,MVC详解
    MVC:开发模式jsp演变历史1.早期只有servlet,只能使用response输出标签数据,非常麻烦2.后来又jsp,简化了Servlet的开发,如果过度使用jsp,在jsp中即写大......
  • 5.4节约内存的编程方法
       以图形用户界面(GUI,GraphicalUserInterface)为基础的Wi你都我是,可以说是一个巨大的操作系统。(1)通过DLL文件实现函数共有     DLL(Dynamic LinkLi......
  • 【JVM】Class文件加载过程
    1 前言JVM的入口数据就是每一个Class文件,我们上一篇,仔细分析了Class文件中的每个字节所代表的含义,那么它是如何加载进JVM的,这一篇我们来讲解。Class文件的解释运行时数......