绛县做网站wordpress的地址在本地

张小明 2026/3/13 4:28:58
绛县做网站,wordpress的地址在本地,影视公司经营范围,企业网站建设分工文章目录Ⅰ. 运行时数据区#xff08;内存布局#xff09;Ⅱ. JVM 运行流程⭐ 大致流程一、类加载#xff08;Class Loading#xff09;二、执行引擎#xff08;Execution Engine#xff09;三、运行时数据区#xff08;Runtime Data Area#xff09;四、本地接口…文章目录Ⅰ. 运行时数据区内存布局Ⅱ. JVM 运行流程⭐ 大致流程一、类加载Class Loading二、执行引擎Execution Engine三、运行时数据区Runtime Data Area四、本地接口Native Interface五、垃圾回收Garbage Collection, GCⅢ. 类加载 Class Loading一、类加载过程二、.class 文件的结构三、类加载器四、双亲委派模型Parent Delegation ModelⅠ. 运行时数据区内存布局一个Java程序对应一个JVM而一个JVM对应一套数据区程序计数器PC Register这只是一个很小的内存空间保存着下一条执行的指令的地址。它是每个线程私有的属于线程隔离的数据。如果正在执行的是native方法则这个值是未定义的。它的存在是为了解决线程切换后能恢复到正确的执行位置因此对多线程执行非常关键。虚拟机栈JVM Stack存放了方法调用的关系。虚拟机栈是线程私有的。JVM栈中每一个元素称为栈帧Stack Frame每个方法在调用时都会创建一个新的栈帧。比如局部变量当方法运行结束后栈帧就被销毁了即栈帧中保存的数据也被销毁了。JVM会抛出如StackOverflowError和OutOfMemoryError都和该区域有关。栈帧中包含局部变量表操作数栈动态连接方法返回地址其他信息保存的都是与方法执行时相关的一些信息。本地方法栈Native Method Stack用于支持Native方法的调用。本地方法栈是线程私有的。本地方法栈与虚拟机栈的作用类似只不过保存的内容是Native方法的局部变量。底层是C/C实现的。在有些版本的JVM实现中例如HotSpot本地方法栈和虚拟机栈是一起的。堆HeapJVM中最大的内存区域保存使用new创建的对象实例。堆是线程共享的。堆的生命周期堆是随着程序开始运行时而创建随着程序的退出而销毁堆中的数据只要还有在使用就不会被销毁。堆是垃圾回收器的主要工作场所。堆细分为新生代一个Eden、两个Survivor和老年代堆中每个对象不只是包含字段值在每个对象的开头还保存了对象头结构用来管理对象运行时信息的元数据容器每个Java对象在内存中分为三部分对象头Header存储锁状态、GC 分代年龄、哈希码等实例数据Instance Data对象的字段值对齐填充Padding补齐内存对齐方法区(Method Area存储类的元数据信息对象实例存放在堆中方法区只是存放类的元数据方法区是线程共享的。实际上在Java8以后方法区被 “元数据区” 替代从原来的 “堆内存” 中移到 “本地内存” 中。------------------------------- | 操作系统分配的总内存物理RAM| ------------------------------- | | | ------------------ | | --------v------ --------------v------------------ | JVM 管理区域 | | JVM 外部使用但不直接管理本地内存| | | | | | - 堆heap | | - 元空间Metaspace | | - 栈stack | | - DirectBuffer / JNI 内存 | | - 程序计数器 | | - JIT 编译缓存 / 线程内部结构 | -------------- ----------------------------------存储内容包括类的结构信息字段、方法、接口、访问修饰符等等静态变量运行时常量池字面量、符号引用JIT 编译后的代码在某些实现中Ⅱ. JVM 运行流程⭐ 大致流程JVM执行流程大概如下所示口诀编译成 class加载做五步解释JIT运行靠内存回收靠 GC。一、类加载Class Loading类加载是JVM把.class文件字节码加载进内存并在内存中生成一个Class对象的全过程包括下面三个主要阶段加载通过类加载器把字节码读进来生成Class对象。链接分为验证、准备、解析三个子阶段。初始化执行clinit静态代码块和静态变量赋值。二、执行引擎Execution EngineJVM核心部件负责执行字节码解释执行将字节码一行一行解释为机器指令。即时编译JIT将热点代码编译为本地机器码提高性能。三、运行时数据区Runtime Data AreaJVM内存模型运行时管理所有数据区域作用描述方法区Method Area存储类的信息类元数据、常量、静态变量等堆Heap存储对象实例是垃圾回收的主要区域虚拟机栈Stack每个线程私有存储方法调用的信息帧栈、局部变量等本地方法栈为执行 native 方法准备程序计数器PC每个线程私有记录当前线程所执行的字节码行号四、本地接口Native InterfaceJVM可以调用本地语言如 C、C写的函数依赖JNIJava Native Interface。五、垃圾回收Garbage Collection, GC自动管理堆内存回收无用对象分代回收新生代、老年代常见算法标记-清除、复制、标记-整理等Ⅲ. 类加载Class Loading一个类在什么时候触发 “加载” 呢❓❓❓① 构造某个类的实例时② 调用类的静态方法/静态成员时③ 使用子类时也会触发父类的加载对于一个类来说它的生命周期是这样子的其中前五步是固定的顺序也是类加载的过程一、类加载过程加载LoadingJVM根据类的 “全限定名”委托给类加载器去加载该类并遵循双亲委派模型然后类加载器从.class文件中读取字节流最后JVM将字节流解析为Class对象放入方法区中这不等于立即解析所有内容验证Verification确保类的字节码是合法的防止恶意代码执行文件格式验证确保这是一个 “能看懂” 的.class文件不是乱写的二进制元数据验证确保类的结构层次是 “符合 Java 语义的”字节码验证防止非法操作、恶意字节码比如篡改局部变量、栈顶数据JVM崩溃符号引用验证为解析阶段提前做准备避免运行时解析失败准备Preparation为类的静态变量分配内存并设置默认初始值不是代码中的赋值。比如static int a 10;只分配内存初始化为默认值0而还没到赋值为10的阶段。解析Resolution将常量池中的符号引用如类名、字段名转换为实际的直接引用内存地址即对常量进行初始化。初始化Initialization执行类的构造方法类构造器即静态变量赋值、静态代码块执行等。二、.class文件的结构.class文件是一个以字节为单位的严格二进制格式的结构体包含类的所有元信息、方法字节码、常量池等。如下所示ClassFile{u4 magic;// 魔数标识文件的类型u2 minor_version;// 次版本号u2 major_version;// 主版本号u2 constant_pool_count;// 常量池数量cp_info constant_pool[];// 常量池包括字符串、类名、方法名、字段名等最核心的部分u2 access_flags;// 访问标志public, abstract, final等u2 this_class;// 当前类的索引指向常量池u2 super_class;// 父类索引指向常量池u2 interfaces_count;// 实现接口数量u2 interfaces[];// 接口表u2 fields_count;// 字段数量field_info fields[];// 字段表u2 methods_count;// 方法数量method_info methods[];// 方法表u2 attributes_count;// 属性数量attribute_info attributes[];// 属性表如源码信息、注解、行号表等}三、类加载器类加载器ClassLoader是类加载机制的核心本质上就是一个 负责读取类的字节流并交给JVM转换为Class对象 的工具。JVM提供了三种主要的类加载器类加载器作用Bootstrap ClassLoader启动类加载器加载 java 核心类库Extension ClassLoader扩展类加载器加载拓展目录下的类jdk 自带但不是标准约定的库Application ClassLoader应用类加载器加载你写的代码和第三方库类四、双亲委派模型Parent Delegation Model在类加载的加载阶段JVM会根据类的全限定名通过类加载器加载该类。类加载器在加载类时默认遵循 “双亲委派模型”即优先让父类加载器尝试加载类只有在父加载器无法加载时才由当前加载器尝试加载。原则从下往上委托然后先父后子从上往下加载。过程如下所示当前类加载器先将请求委托给父类加载器注意是层层委托上去直到最高层加载器。然后从最高层父类加载器开始加载class文件如果加载不到则一层一层往下尝试是否能进行加载。这样子做是为了保证java.lang.Object、String这类核心类一定由启动类加载器加载避免用户自定义的类覆盖核心类提升安全性。比如用户伪造了一个java.lang.String但加载器是从上往下的此时会先加载父类中的java.lang.String而不会加载到用户伪造的那个版本避免类的重复加载。比如 A 类和 B 类都有一个父类 C 类那么当 A 启动时就会将 C 类加载起来那么在 B 类进行加载时就不需要在重复加载 C 类了。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站开发的数据库设计实体是什么一个网站怎么推广

第一章:Open-AutoGLM 与 Power Automate 核心定位差异Open-AutoGLM 与 Power Automate 虽然均面向自动化任务处理,但在设计哲学、技术架构与适用场景上存在本质区别。前者聚焦于开放域下的自然语言驱动自动化,后者则构建在企业级低代码平台之…

张小明 2026/3/8 2:13:18 网站建设

网站开发公司怎么做账服务专业的网站开发设计

Pandas 是 Python 中用于数据分析和处理最流行的开源库之一,建立在 NumPy 之上,提供了高性能、易用的数据结构和数据分析工具。它特别适合处理结构化数据(如表格型或异质型数据)。以下是 Pandas 的基础概念详细介绍:一…

张小明 2026/3/9 11:53:44 网站建设

张店网站建直播平台app开发

高性能LLM新星:gpt-oss-20b在专业领域任务中的表现 在企业级AI应用日益普及的今天,一个现实问题正困扰着许多技术团队:如何在不牺牲性能的前提下,让大语言模型真正“落地”到本地系统中?公有云API虽强大,但…

张小明 2026/3/9 11:53:37 网站建设

招远网站建设招聘站长工具综合查询

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

张小明 2026/3/9 11:53:30 网站建设

龙岗外贸网站制作手机上制作ppt的软件

Android高斯模糊终极指南:Blurry库完整使用教程 【免费下载链接】Blurry Blurry is an easy blur library for Android 项目地址: https://gitcode.com/gh_mirrors/bl/Blurry 还在为Android应用中的模糊效果实现而烦恼吗?面对复杂的RenderScript …

张小明 2026/3/9 11:53:20 网站建设

建设网站群的指导思想代做毕设的网站

当大模型的基础能力逐渐普及时,我们清晰地看到:AI Agent(智能体)正成为决定AI应用成败的关键。从自动化客服到金融分析,从内容创作到企业决策,智能体已经展现出惊人的问题解决能力。它不再是那个被动回答问…

张小明 2026/3/9 11:53:16 网站建设