JVM系列(1)-----初始JVM

JVM系列-参数调优1 说到JVM的参数调休,一定得知道JVM的内存结构,理解JVM内存结构的参数调优都是耍流氓,参数调优至少要知道调的是什么,优化的是什么。 JVM内存和物理机内存其实是有很多对应关系的,JVM的内存也受到物理机内存的约束,毕竟JVM内存是基于物理内存虚拟出来的东西,大体来说, JVM内存分为heap区、stack区、method区、程序计数器,再细分一点的话heap区又分为新代和老代,栈区又分为j 阅读详情

这几天面试,问了一些JVM的知识感觉答的不是很好,在此写JVM系列的文章(再次讨论的是java8的相关知识点),回顾一下相关知识,希望能够帮到看我文章的朋友,现在马上开始。

相关概念:
1.什么是jvm?(java virtual machine)
Java虚拟机是抽象的计算机。像真正的计算机一样,它具有指令集并在运行时操作各种内存区域。

2.什么是运行时数据区?
Java虚拟机定义了在程序执行期间使用的各种运行时数据区域。其中一些数据区域是在Java虚拟机启动时创建的,仅在Java虚拟机退出时才被销毁。其他数据区域是每个线程的。创建线程时创建每个线程的数据区域,并在线程退出时销毁每个数据区域。

The Java Virtual Machine defines various run-time data areas that areused during execution of a program. Some of these data areas are created on Java Virtual Machine start-up and are destroyed only whenthe Java Virtual Machine exits. Other data areas are per thread.Per-thread data areas are created when a thread is created anddestroyed when the thread exits. —摘录java8官网描述

3.运行时数据区示意图

在这里插入图片描述

4.内存模式(JMM)
在这里插入图片描述

类加载机制

先用一张图看看一个java文件时怎样被加载进虚拟机的
在这里插入图片描述
在将生成的class文件加载进jvm中时主要有三个步骤:

装载
	1.找到class文件的位置,并用类加载器classLoader基于双亲委派的机制进行加载
	2.将类文件信息交给jvm
	3.将类文件的对象交给jvm
链接
链接阶段负责把类的二进制文件合并到JRE中,可以分为三个:
  (1) 验证 保证类的加载正确性。
  (2) 准备 要将类的静态变量分配内存空间,并将其的值进行初始化成默认值。
  (3) 解析 将类的符号引用转换为直接行用。
初始化
	主要对类的静态变量,常量真正的赋值 
类的初始化时机
1.创建类实例(new 、发射,反序列化)。
2.调用某个类的静态方法
3.访问类或者接口的类变量,或为该变量赋值
4.初始化某个类的子类
双亲委派机制

在这里插入图片描述
双亲委派机制为了避免同名的对象重复加载而出现的机制
类加载还会出现下列机制
1.全盘负责 :当一个类加载器负载一个类的加载时,该类所依赖的和引用的其他类也将由这个类加载
2.父类委托:尝试让父类加载器加载,当父类加载器无法加载时才让自己加载
3.缓存机制:所有加载过的class都会被缓存,所有的类只加载一次

运行时数据区

Java虚拟机定义了在程序执行期间使用的各种运行时数据区域。其中一些数据区域是在Java虚拟机启动时创建的,仅在Java虚拟机退出时才被销毁。其他数据区域是每个线程的。创建线程时创建每个线程的数据区域,并在线程退出时销毁每个数据区域。

在这里插入图片描述

方法区

线程共享的一片内存区域,方法区也叫永久代,用户存储被jvm加载的类信息,静态变量,常量,以及即时编译器编译的代码等数据,内存管理由GC分代收集来实现压缩,标记,清除等操作

堆

线程共享的一片内存区域,主要用来存储对象和数组,采用分代算法进行内存管理,从GC角度将堆细分为新生代和老年代。

虚拟机栈

线程非共享的一片区域,跟线程的生命周期一致,在每个方法调用会生成栈帧(Stack Frame),里面主要存储局部变量 ,操作数栈,动态链接,和方法返回值,为执行Java方法服务

本机方法栈

与虚拟机的类似,但是主要为native的方法服务

程序计数器

一块较小的内存空间,当前线程执行字节码的行号指示器,每条线程都有独立的计数器,这个内存区域时唯一没有OOM的区域,因为程序在生成字节码文件时都已经确定了程序的最大行号

JVM 的GC回收算法----G1 JVM内存垃圾回收目前有多种算法,每种算法都有自己的特点和使用场景,本文主要介绍一下G1(Garbage-First)算法.G1是一款面向服务端应用的垃圾回收器,是SUN公司在JDK1.7中提出来的,初衷是替换JDK1.5中的CMS垃圾回收算法。G1之前的所有收集器都是对整个新生代或老年代进行垃圾回收,而G1不是这样:G1是将整个堆空间分成许多个大小不等的独立区域(Region),大约有2... 阅读详情

相关推荐

深入解析FOC电流环PI参数整定:从理论到实践

本文深入解析了FOC(磁场定向控制)中电流环PI参数整定的核心原理与实践方法。文章从永磁同步电机模型出发,详细阐述了基于带宽与零极点对消的工程法及考虑逆变器延迟的二阶系统整定法两种经典策略,并提供了从理论计算到安全上电调试的完整步骤与常见问题解决方案,帮助工程师精准调校电机控制性能。

weixin_29164497的博客 451

深入理解JVM:运行时数据区域划分

一、运行时数据区 Java虚拟机在Java执行的过程中会将它所管理的内存区域划分为若干个不同的数据区域。Java7.0划分如下 其中: 线程共享:方法区、堆 线程私有:虚拟机栈、本地方法区、程序计数器 注:在Java8中移除了永久代(方法区),通过元数据区(meataspace)存储数据。元数据区本质与永久代类似,都是对方法区的实现。 区别:元数据空间不在虚拟机中,而是使用本地内存 1.1、程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是记录当前

正义 705

从零开始搭建多旋翼无人机:飞控系统配置全攻略(含IMU校准技巧)

本文详细介绍了从零开始搭建多旋翼无人机的飞控系统配置全流程,重点解析了IMU校准技巧。涵盖飞控硬件选型、IMU校准(加速度计、陀螺仪、磁力计)、GPS与罗盘集成方案、飞行模式配置策略及实战故障排查手册,帮助DIY爱好者提升无人机飞行稳定性与安全性。

beta5的博客 798

JVM06_方法区的概述、内部结构、演变、常量池、运行时常量池、垃圾回收

①. 什么是JVM? 1.什么是JVM? ①. JVM 是 java虚拟机,是用来执行java字节码(二进制的形式)的虚拟计算机 ②. jvm是运行在操作系统之上的,与硬件没有任何关系 ②. Java的跨平台及原理 2.Java的跨平台及原理 ①. 跨平台:由Java编写的程序可以在不同的操作系统上运行:一次编写,多处运行 ②. 原理:编译之后的字节码文件和平台无关,需要在不同的操作系统上安装一个对应版本的虚拟机(JVM) ③. JVM的分类 3.JVM的分类 ①. 类加载子系统

所得皆惊喜 5144

CST微带贴片天线设计全流程:从S11优化到辐射方向图分析

微带贴片天线是现代无线通信设备中的关键部件,其设计依赖于电磁场理论与仿真软件的结合。理解天线的基本工作原理,如谐振频率、阻抗匹配和辐射机制,是进行有效设计的基础。通过电磁仿真,工程师可以精确预测天线性能,避免传统手工计算的误差。在工程实践中,CST Studio Suite作为行业标准的三维电磁仿真工具,能够高效处理复杂的边界条件与材料属性,帮助优化S11参数和辐射方向图。本文聚焦于2.4GHz Wi-Fi频段微带贴片天线的完整设计流程,详细解析了端口设置、网格划分等关键步骤,并针对常见的仿真失败问题提供了

weixin_30784501的博客 459

libfacedetection 框架阅读及扩展经验

libfacedetection 框架源码解析与扩展心得1. libfacedetection 框架简介2. 源码解析2.1 facedetectcnn.h2.2 facedetectcnn.cpp2.3 facedetectcnn-model.cpp3. 其他层的扩展--depthwise convolution 前段时间因为工作需要,对libfacedetection框架做了些扩展,在阅读源...

weixin_42616332的博客 1500

JVM系列-第12章-垃圾回收器

垃圾收集机制是Java的招牌能力,极大地提高了开发效率。这当然也是面试的热点。那么,Java常见的垃圾收集器有哪些?截止JDK1.8,一共有7款不同的垃圾收集器。每一款的垃圾收集器都有不同的特点,在具体使用的时候,需要根据具体的情况选用不同的垃圾收集器(重点记忆图)。

xiejunxing的专栏 2341

西门子PLC新手必看:200SMART与1200/1500的MODBUS RTU通讯实战(附完整配置流程)

本文详细解析了西门子PLC中S7-200 SMART与S7-1200/1500之间实现MODBUS RTU通讯的完整实战流程。内容涵盖硬件接线、软件配置及程序编写,重点讲解了200SMART作为从站、1200/1500作为主站的典型架构,并提供了关键功能块的使用方法和常见问题排查技巧,帮助新手快速打通不同系列PLC间的数据交换。

weixin_29214559的博客 398

快速上手JVM系列(一)——进一步认识Java与JVM概述

进一步认识Java,Oracle JDK与Open JDK,Java语言的地位,Java上层框架与JVM的关系,Java代码的执行流程,初识JVM——跨语言的平台,虚拟机是什么,JVM发展历程,JVM架构模型,初探JVM内存结构,JVM的生命周期,周志明老师深入理解Java虚拟机与尚硅谷JVM教程的整合

1741

SPD5 集线器协议内容解析

​ 若不同SPD5 Hub后面的本地侧设备同时发送请求,则是22和23、24的混合过程,先通过LID裁决,再通过HID裁决,这里的LID是本地设备的,若LID一致,则看HID,由于SPD5 Hub的本地侧设备HID均为111,因此实际上是比较SPD5 Hub的HID,这个过程在前文提到,SPD5 Hub会转换HID。​ 若MR27[4]=1且MR27[3:0]=1,如果MR51[3:0]=1时,发送IBI,并且MR48[7]置1,将GETSTATUS CCC的待处理中断位[3:0]更新为0001。

weixin_50591344的博客 3860

Python爬取公交线路信息及站点shp数据 文末附数据下载地址

三、现在已经获取到了各个线路名称、链接,以及所途径的上下行站点,那么接下来就应该对开始对第三页url进行信息采集,即本次爬虫的最终目的:爬取所有站点的GPS坐标数据。但坑就坑在,二环一号线属于环线,所以只有左侧有站点数据,而其他非环线车次的站点数据分有上下行,如果用正则匹配,则分不清楚到底哪些是上行站点哪些是下行站点。以前爬过百度地图,当时用的是API平台,加上网站比较规范,所以标签节点什么的都比较清晰,但这次由于特殊原因所选择的网站为公交网,废话不多说直接开始吧。checi=二环一号线。

J_Giser的博客 1317

JVM 系列(一) --- 深入浅出对 JVM 的理解

本篇文章主要介绍 **JVM 是什么, JVM 的内存布局是什么样的, JVM 的类加载机制是怎么一回事,以及垃圾回收的概念,**这些概念都是以后升学或者是找工作面试常考/常问的问题,因此需要我们经常回顾,本篇文章便可以当做常回顾的工具.我们在上学期间可能已经接触过虚拟机这个概念,虚拟机就是一个完整的计算机系统,其具有完整的硬件功能,并且运行在一个完全隔离的环境中,

Fug_Lee的博客 1685

【PSINS工具箱】159联邦滤波器代码优化与注释、运行结果、文字性解释。15维状态量、9维观测量,联邦滤波与集中式滤波对比。完整代码可订阅后查看

基于工具箱的联邦滤波代码,15维状态量、9为观测量

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 486

JVM系列(十)[CMS和G1的GC日志分析解读,JVM常用参数]

文章目录

书院二层楼 1104

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java 8 jvm参数_jdk8 jvm配置参数说明

设置内存分配池的初始大小(以字节为单位)。该值必须为0或1024的倍数且大于1 MB。附加字母k或K表示千字节,m或M指示兆字节,g或G指示千兆字节。根据系统配置在运行时选择默认值。请参阅Java SE HotSpot虚拟机垃圾收集调整指南中的“人体工程学”部分。以下示例显示如何使用各种单位将分配的内存大小设置为6 MB:-XX:InitialHeapSize = 6291456-XX:Initi...

weixin_39904809的博客 1592

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JVM系列--初始JVM

JVM 全称是 Java Virtual Machine,中文译名 Java虚拟机。JVM 本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件。Java源代码执行流程如下:分为三个步骤:1、编写Java源代码文件。2、使用Java编译器(javac命令)将源代码编译成Java字节码文件。3、使用Java虚拟机加载并运行Java字节码文件,此时会启动一个新的进程。

jifashihan的博客 984

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

JVM-初始JVM

JVM全称是JavaVirtualMachine,中文译名Java虚拟机。JVM 本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件。

weixin_64133130的博客 1734

初始jvm

什么是内存泄漏:指的是不在使用的对象在系统中未被回收,内存泄漏的积累可能导致内存溢出。Java中为了简化对象的释放,引入了自动的垃圾回收机制。通过垃圾回收器来对不再使用的对象完成自动回收,垃圾回收器主要负责对堆上的内存进行回收。

weixin_50823701的博客 825

Jvm系列-Jvm概述(一)

目录 1,什么是JVM? 2,JVM跨平台及原理 3,JVM的分类 4,JVM的位置 5,JVM的体系结构 6,Java代码的执行流程 7,JVM的架构模型 8,JVM的生命周期 9,三大商业虚拟机 1,什么是JVM? JVM 是 java虚拟机,是用来执行java字节码(二进制的形式)的虚拟计算机。 jvm是运行在操作系统之上的,与硬件没有任何关系。 2,JVM跨平台及原理 跨平台:由Java编写的程序可以在不同的操作系统上运行:一次编写,多处运行。 原理:编译之后的字节码

理科男同学 5万+

1、初始JVM

一、什么是JVM 1.1 什么是JVM VM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 主流虚拟机 虚拟机名称 介绍 HotSpot Oracle/Sun JDK和OpenJDK都使用HotSPot VM的相同核心 J9 J9是IBM开发...

吴大侠的博客 310

JVM的初始认识

JVM的初始认识什么是JVM1.JVM是Java跨语言平台的根本。(屏蔽操作系统和硬件的差异化:java一次编写到处运行)2.JVM是虚拟机架构,拥有自己的指令集(JVM提供了一套标准的指令)和不同运行时期的内存区域3.JVM只在乎 class file(字节码文件),JVM是一个多语言的平台(不单单为我们的Java语言服务)字节码及类装载机制类的加载过程加载:查找class文件(如何查找:类的全限定类名获取class文件)并导入到JVM运行时数据区链接初始化:为类的静态变量赋值,然后执行类的static语

weixin_43347737的博客 272

详解查看JVM初始和最终的参数

详解查看JVM初始和最终的参数

FuncPlotCalc 611

JVM底层原理之堆内存初始大小

一、java1.8堆内存基本情況 java1.8之後將最初的永久代取消了,由元空間取代。 在java8中,永久代已經被移除,被元空間取代。元空间本质和永久代类似。 元空间(java8)与永久代(java7)之间最大的区别在于: 永久代使用的是JVM堆内存,但是java8以后的元空间并不在虚拟机中,而是使用本机物理内存。 因此,默认情况下,元空间大小受本地内存限制。类的元数据放入na...

lixinkuan的博客 2210

01.基础篇:初始jvm

java Virtual Machine 中文译名:java虚拟机JVM本质上是一个运行在计算机上的程序,他的职责是运行java字节码文件主要是 .java文件 通过 javac命令编译为 .class(字节码文件)文件 进而通过java命令 运行代码。

weixin_42314827的博客 1892

JVM系列之内存与垃圾回收篇

JVM系列之内存与垃圾回收篇       今天听同事说,当996成为常态,没有一个程序员是无辜的 话说,咱们程序员总是有一颗想要学习的心,套用网上的一句话就是:一天不学习,浑身难受啊!!! 文章目录JVM系列之内存与垃圾回收篇前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机

JSDSFY的博客 2841
上一篇: javax.validation.UnexpectedTypeException: HV000030: No validator could be found for type: java.lang.
下一篇: 解决feign调用session传不出去的问题
jackwang91
博客等级 码龄10年 3粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值