浅谈: 计算机—JVM—线程

news2024/9/23 14:27:57

计算机存储模型(CPU、寄存器、高速缓存、内存、外存)

现代计算机系统CPU和内存之间其实是有一个cache的层级结构的。比内存速度更快的存储介质(SRAM),普通内存一般是DRAM,这种读写速度更快的介质充当CPU和内存之间的Cache,这就是缓存。当CPU写cache时,cache中没有相应的内存数据需要把该数据从内存加载到cache中,然后更新cache,再更新内存。

寄存器

 CPU的一部分,空间在kb级别,用来暂存指令、数据和地址。CPU处理数据时先把数据取到寄存器中,再作处理。

内存

计算机运行过程中的存储主力,存储指令(编译好的代码段),运行中的各个静态,动态,临时变量,外部文件的指针等。程序的运行都是在内存中进行,内存的大小决定可运行程序的大小。

硬盘

机械硬盘(HDD): 磁性碟片
    机械硬盘主要由磁盘盘片、磁头、主轴与传动轴等组成,数据就存放在磁盘盘片中,与留声机上的唱片相似(硬盘是上下双磁头)。
固态硬盘: 闪存颗粒、DRAM
    闪存的固态硬盘(SSD): 可以移动,数据保护不受电源控制,寿命较长,能适应于各种环境:笔记本硬盘、微硬盘、存储卡、U盘等。
    DRAM: 仿效传统硬盘的设计,高性能的存储器,理论上可以无限写入,需要独立电源来保护数据安全。可被大部分操作系统的文件系统工具进行卷设置和管理,非主流的设备。

数据与二进制的对应规则

计算机编码:
ASCII: 一个字节byte有八个二进制位可组合出256种状态,每个状态对应一个符号,有256个符号。ASCII规定了128个字符(对英语字符与二进制位间做了统一规定)
非ASCII码: 不同国家,使用的字符不一致,仅128个字符不够用,所以针对本国字符特点,使用了256个字符。
Unicode: 该数字码全球统一,属于字符编码的标准,即字符集。nicode并未明确编码规则,根据Unicode字符集有常用的编码规则: UTF-8、UTF-16等。
UTF-8: 作为Unicode一种实现方式,使用1-4个字节进行编码。UTF-8与ASCII码表示的二进制数完全一致。

JVM

JVM内存模型

 堆:

堆: 分为两块,新生代和老年代。
老年代(Old)占2/3,年轻代(Young)占1/3,
年轻代中包含Eden区和Survivor区,Survivor区包含From(S0区)区和To(S1区),默认Eden区、From区、To区的比例为8:1:1,当Eden区内存不足时会触发Minor gc,没有被回收的对象进入到Survivor区,同时分代年龄+1,再次触发Minor gc时,From区中的对象会移动到To区,Minor gc会回收Eden区和From区中的垃圾对象,对象的分代年龄会再次增加,当分代年龄增加到15以后,对象会进入到老年代。当老年代内存不足时,会触发Full gc,如果Full gc无法释放足够的空间,会触发OOM内存溢出,在进行Minor gc或Full gc时,会触发STW(Stop The World)即停止用户线程。

非堆(永久代/元空间区):

常量、静态变量、类信息、运行时常量池,操作的是直接内存。

运行时数据区(方法区、堆的生命周期与JVM一致,与线程无关)。

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

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

相关文章

医学图像分割之TransUNet

目录 一、背景 二、提出问题 三、解决问题 四、网络结构详解 CNN部分(ResNet50的前三层) transformer部分 U-Net的decoder部分 五、模型性能 开头处先说明下TransUNet的地位:它是第一个将transformer用于U型结构的网络。 一、背景 医…

【Java|golang】1105. 填充书架---动态规划

给定一个数组 books ,其中 books[i] [thicknessi, heighti] 表示第 i 本书的厚度和高度。你也会得到一个整数 shelfWidth 。 按顺序 将这些书摆放到总宽度为 shelfWidth 的书架上。 先选几本书放在书架上(它们的厚度之和小于等于书架的宽度 shelfWidt…

PCL点云库(1) — 简介与数据类型

目录 1.1 简介 1.2 PCL安装 1.2.1 安装方法 1.2.2 测试程序 1.3 PCL数据类型 1.4 PCL中自定义point类型 1.4.1 增加自定义point的步骤 1.4.2 完整代码 1.1 简介 来源:PCL(点云库)_百度百科 PCL(Point Cloud Library&…

Vue组件间通信的7种方法(全)

大厂面试题分享 面试题库 前后端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 web前端面试题库 VS java后端面试题库大全 组件之前的通信方法 1. props/$emit 父传子 props 这个只能够接收父组件传来的数据 不能进…

6.4 一阶方程组与高阶方程的数值解法

学习目标: 学习一阶方程组与高阶方程的数值解法的目标可以分为以下几个方面: 掌握一阶方程组和高阶方程的基本概念和求解方法;理解数值解法的概念和原理,了解常见的数值解法;掌握欧拉方法、改进欧拉方法和龙格-库塔方…

Viu联合华为HMS生态,共创影音娱乐新体验

华为HMS生态携手流媒体平台Viu,为海外消费者打造精品移动娱乐应用体验,并助力提升流量变现能力。Viu在中东非、东南亚等16个国家及地区提供广告合作和付费会员服务,支持优质视频内容高清点播和直播。自2019年起,Viu在中东非区域与…

Windows下版本控制器(SVN)-TortoiseSVN使用

文章目录 基础知识-Windows下版本控制器(SVN)3.4 TortoiseSVN使用3.4.1 SVN检出(SVN Checkout)3.4.2 SVN更新(SVN Update)3.4.3 **SVN**提交(SVN Commit)3.4.4 **SVN**还原(SVN Revert)3.4.5 解决文件冲突3.4.6 授权访问3.4.7 **显示日志(Show log)**3.4.8 **版本库浏览(Repo-b…

Java项目上线之服务器环境配置篇(二)——Tomcat配置

Java项目上线之服务器环境配置篇(二)——Tomcat配置 Tomcat的选择: 云服务器tomcat的选择最好与本机项目运行的tomcat版本号一致,避免一些不必要的问题。 配置步骤: 1、首先进入云服务器创建好放置tomcat的文件夹。这…

台灯发光方式哪种好?分享好用侧发光的护眼台灯

台灯发光方式主要是侧发光、直发光方式。个人觉得侧发光的台灯会比较好。 侧发光灯主要利用导光板技术,根据led灯板灯珠的排布以及灯珠的发光角度进行导光板网点设计,使光线通过导光板达到亮度均匀化的效果。 而直发光灯以高亮度led为发光源&#xff0…

手势语言识别模型训练及应用

使用训练集训练模型,使模型能够识别不同手势。 OpenCV-Python环境使用训练集训练模型,使模型能够识别不同手势。系统测试 本项目基于卷积神经网络,通过Python的翻转功能沿垂直轴翻转每个图像,实现手势语言识别的功能。系统流程如图…

FL Studio21最新中文版安装包下载操作教程

FL Studio21是一款非常流行的数字音频工作站(DAW)软件,用于音乐制作、录音、调整和混音。它由Image-Line公司开发,前身叫FruityLoops,后改名为FL Studio。 FL Studio21的主要功能包括: 1. MIDI编序器:用于录入和编辑MIDI音序,控制软件乐器和外部硬件。 2. 虚拟乐器:提供各种模…

matrix部署

一、环境描述 首先matrix是一个去中心化的聊天服务,matrix实现了端对端的加密,这意味着不仅其他人无法查看你的聊天内容,哪怕你更换了一个终端,你也需要私钥才能够查看你的聊天记录。 这是终极的隐私保护方案,因为一旦…

【Python_Matplotlib学习笔记(二)】Matplotlib绘图嵌入PySide2图形界面

Matplotlib绘图嵌入PySide2图形界面 前言正文1、FigureCanvasQTAgg类介绍2、基于FigureCanvasQTAgg类实现Matplotlib绘图嵌入PySide2图形界面3、示例代码及实现效果 前言 在本文中主要介绍 如何基于 FigureCanvasQTAgg 类实现 Matplotlib 绘图嵌入 PySide2 图形界面。 正文 …

全栈工程师的职业前景及就业环境情况说明

本篇文章主要讲解全栈工程师的职业前景和就业趋势。 作者:任聪聪 日期:2023年4月20日 全栈工程师顾名思义就是会一个技术栈领域的所有客户端技术,如web全栈即前后端技术栈都会的工程师,如web、pc、app都会的则也是全栈&#xff08…

电脑清理C盘记录

从30几G扩大到了50G。 进行了虚拟内存的移动。 来自C盘清理最全攻略,用这几招轻松解决,不存在C盘爆红 我就使用系统管理的大小没有更改了,这也方便改回去叭。 可能会出现警告,不用管。 把桌面移动到了D盘。 文件夹桌面右键属性…

初识Android内存优化

一、简介 Android 内存优化是指优化 Android 应用程序的内存使用,以减少可用内存的消耗,提高应用程序的性能和可靠性。Android 内存优化可以通过减少内存使用量,减少对资源的消耗,以及提高内存利用率来实现。 安卓系统对每个应用…

【音视频第16天】详解STUN协议

一个webRTC传输协议搞得自己云里雾里的。现在主动攻克一下。先看看STUN协议。好,我们开始吧 目录 1.讲讲什么是NAT?2.NAT有啥问题?3.四种NAT类型4.STUN Server5.TURN ServerSTUN和TURN的实现:什么是STUN?为什么需要ST…

中台产品经理02:产品经理如何用一套方法搞定复杂业务拆解?

如果你问我作为企业级应用的产品经理日常工作最大的感受是什么?那就是经常会需要面对众多复杂类业务需求。 原因其实很好理解,B端产品通常需要支持更复杂的业务流程,需求也更加个性化和细分。例如,银行业务系统、医院管理系统、物…

JVM中的垃圾回收概念及其基础算法说明

文章目录 一、 垃圾回收概述1、什么是垃圾?2、为什么我们需要GC 二、垃圾回收之判别对象死活1、标记阶段:引用计数算法2、标记阶段:可达性分析算法 二、 finalization 机制三、整理和清除对象1、标记-清除算法(Mark-Sweep&#xf…

Selenium安装及环境配置

目录 一、Selenium 简介1. 组件2. 特点 二、安装Selenium✨三、下载对应版本的Chromedriver1.查看Chrome的版本号2.下载驱动 chromedriver和配置3.解压到本地4.复制文件放入python安装目录的Scripts文件夹中5.Selenium启动Chrome 一、Selenium 简介 1. 组件 Selenium IDE&…