jvm复习,深入理解java虚拟机一:运行时数据区域

        程序计数器(Program Counter Register) 它是程序控制流的指示器,简单来说,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器

        Java虚拟机栈(Java Virtual Machine Stack)也是线程私有的,它的生命周期 与线程相同。虚拟机栈描述的是Java方法执行的线程内存模型。

        本地方法栈(Native Method Stacks)本地方法栈是为虚拟机使用到的本地(Native) 方法服务。

       Java堆(Java Heap)是虚拟机所管理的内存中最大的一块。Java堆是被所 有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例。

       这里可能会考点面试题,什么垃圾回收器之类的。

       方法区(Method Area)与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载 的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。

       说到方法区,不得不提一下“永久代”这个概念,尤其是在JDK 8以前,许多Java程序员都习惯在 HotSpot虚拟机上开发、部署程序,很多人都更愿意把方法区称呼为“永久代”(Permanent Generation),或将两者混为一谈。本质上这两者并不是等价的,因为仅仅是当时的HotSpot虚拟机设 计团队选择把收集器的分代设计扩展至方法区,或者说使用永久代来实现方法区而已。

     元空间(Metaspace)是 Java 虚拟机中方法区(Method Area)的一种实现。

     元空间的引入旨在解决永久代的一些问题,如内存泄漏和溢出。元空间的特点包括:

  1. 动态分配: 元空间不再有固定的大小限制,它会根据应用程序的需要进行动态分配和释放内存。

  2. GC(垃圾回收)管理: 类的元数据现在由 JVM 的垃圾回收器进行管理。这意味着当类不再被使用时,相关的元数据可以被垃圾回收器回收。

  3. 避免永久代的问题: 元空间的动态性质和垃圾回收的管理有助于避免永久代常见的内存泄漏和溢出问题。

     运行时常量池(Runtime Constant Pool)是方法区的一部分。Class文件中除了有类的版本、字 段、方法、接口等描述信息外,还有一项信息是常量池表(Constant Pool Table),用于存放编译期生 成的各种字面量与符号引用,这部分内容将在类加载后存放到方法区的运行时常量池中。

    这部分较为简单,我这边就不怎么介绍了,关于垃圾回收器的几种算法,什么类型的垃圾回收器,我下下篇文章可能会写到。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/636034.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode每日一题】2809. 使数组和小于等于 x 的最少时间

2024-1-19 文章目录 [2809. 使数组和小于等于 x 的最少时间](https://leetcode.cn/problems/minimum-time-to-make-array-sum-at-most-x/)思路: 2809. 使数组和小于等于 x 的最少时间 思路: 获取两个列表的长度n,并初始化一个二维数组f&…

一种更快的Kmeans原理与实现

普通的k-means实现大多需要多轮迭代,一轮需要O(n * k)的复杂度,其中n是数据量,k是聚类的数量。观察到大部分地方的标准均值中的大多数距离计算都是冗余的。 所以Elkan-Kmeans通过三角不等式来优化这一过程,减少无效计算。 困难在于三角不等式给出了上界,但我们需要下界以…

《微信小程序开发从入门到实战》学习八十六

6.15 设备API 6.15.5 屏幕亮度API 使用wx.setScreenBrightness可设置屏幕亮度。示例代码如下: wx.setScreenBrightness({ value: 0.5, // 屏幕亮度值,范围0~1,1表示最亮 success() {} }) 使用wx.getScreenBrightness可获取屏幕亮度,示例代…

我在提交代码的时候突然发现别人刚才提交了一点代码,我没有拉取导致问题,请问怎么解决

问: 回答: 问: 我跟随输入git pull ,然后又以下提示: Merge branch systemPower_dev of https://xxxx.com into xxxx_dev # Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. …

C# 十大排序算法

以下是常见的十大排序算法(按照学习和实现的顺序排列): 冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)希尔排序(Shell Sort&…

LLM设计原理学习笔记

1 设计原则 (1)不要将多模态特征直接线性相加 博文《马毅LeCun谢赛宁曝出多模态LLM重大缺陷!开创性研究显著增强视觉理解能力》描述了多模态encoding线性相加带来的问题;

推荐几种常用Web前端开发工具

工欲善其事,必先利其器。一个好的编辑器,往往能帮助开发人员提高编码效率。下面为大家推荐几款前端常用的编辑器。 1.websorm WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的H…

【VTKExamples::PolyData】第九期 ExtractCellsUsingPoints

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文分享VTK样例ExtractCellsUsingPoints,并解析vtkSelectionNode接口,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 目录…

SELF自动化指令集构建代码实现

SELF-Instruct paper: 2022.12, SELF-INSTRUCT: Aligning Language Model with Self Generated Instructions https://github.com/yizhongw/self-instruct https://github.com/tatsu-lab/stanford_alpaca#data-generation-process 一语道破天机:类似非线性插值&a…

plt.animation绘制动画

目录 一:介绍 二:创建线动画 一:介绍 matplotlib.animation 是 Matplotlib 库中的一个模块,用于创建动画。它提供了多种工具和函数,使您能够轻松地创建各种类型的动画。 二:创建线动画 import numpy as…

flask 与小程序 购物车删除和编辑库存功能

编辑 &#xff1a; 数量加减 价格汇总 数据清空 mina/pages/cart/index.wxml <!--index.wxml--> <view class"container"><view class"title-box" wx:if"{{ !list.length }}">购物车空空如也&#xff5e;</view>…

【Linux】第三十站:进程间通信

文章目录 一、是什么二、为什么三、怎么办四、管道1.什么是管道2.管道的原理3.接口4.编码实现5.管道的特征6.管道的四种情况 一、是什么 两个或者多个进程实现数据层面的交互 因为进程独立性的存在&#xff0c;导致进程通信的成本比较高 通信是有成本的&#xff0c;体现在要打破…

Curl- go的自带包 net/http实现

Curl- go的自带包 net/http实现 case http包中的Request 发送请求的步骤&#xff1a;1. 创建客户端 2. 发送请求 3. 接受响应 client : &http.Client{}req, _ : http.NewRequest("POST", url, nil) // request中有很多参数可以设置//设置头部 req.Header.se…

【禅道】的介绍及安装使用

文章目录 一、禅道入门1.1 概述1.2 特点1.2.1 私有化部署&#xff08;禅道&#xff09;&#xff1a;1.2.2 SaaS云部署&#xff08;云禅道&#xff09;&#xff1a; 1.3 安装1.4 启动禅道 二、禅道的使用2.1 编辑公司信息2.2 搭建组织架构2.2.1 创建部门2.2.2 增加员工 2.2 产品…

axios封装-reques.js

1. 简介 参考网址&#xff1a;http://www.axios-js.com/zh-cn/docs/#axios-create-config 在现代的前端开发中&#xff0c;我们经常需要与后端API进行交互&#xff0c;而axios是其中的一个非常流行的选择。为了简化请求的处 理和增强代码的可读性&#xff0c;我们经常需要对…

Solana Mobile开启第二代Saga手机预售,怎么购买Solana Mobile?

PANews 1月17日消息&#xff0c;Solana Mobile官方宣布开启其第二代Saga手机&#xff08;Chapter 2&#xff09;的预售&#xff0c;预购押金为450美元&#xff0c;预计将于2025年上半年发货。同时&#xff0c;Chapter 2的发售将会包括推荐&#xff08;Referrals&#xff09;和积…

用MATLAB函数在图表中建立模型

本节介绍如何使用Stateflow图表创建模型&#xff0c;该图表调用两个MATLAB函数meanstats和stdevstats。meanstats计算平均值&#xff0c;stdevstats计算vals中值的标准偏差&#xff0c;并将它们分别输出到Stateflow数据平均值和stdev。 请遵循以下步骤&#xff1a; 1.使用以下…

sql570 | 至少有5名下属的经理 | join on | group by | having

讲给一张表&#xff0c;表字段分别为 id 、姓名、部分、经理id&#xff0c;可能存在张三既是下属也是经理 现在找出下属起码有5名员工的经理 CREATE TABLE Employee (id INT,name VARCHAR(255),department VARCHAR(255),managerId INT );INSERT INTO Employee (id, name, depar…

数据库的内连接和外连接

数据库的内连接和外连接 内连接: 两个或两个以上的表进行关联查询时&#xff0c;查询的结果集中 返回所有满足连接条件的行。 外连接: 两个或两个以上的表进行关联查询时&#xff0c;查询的结果集中 除了返回满足连接条件的行以外&#xff0c;还返回左&#xff08;或右&…

rabbitmq的介绍、使用、案例

1.介绍 rabbitmq简单来说就是个消息中间件&#xff0c;可以让不同的应用程序之间进行异步的通信&#xff0c;通过消息传递来实现解耦和分布式处理。 消息队列&#xff1a;允许将消息发到队列&#xff0c;然后进行取出、处理等操作&#xff0c;使得生产者和消费者之间能够解耦&…