兰州网站建设优化推广wordpress5.0调用api接口
news/
2025/9/27 5:03:22/
文章来源:
兰州网站建设优化推广,wordpress5.0调用api接口,wordpress快速工具栏,冠县企业做网站推广JVM全称是Java虚拟机#xff0c;在聊什么是JVM之前#xff0c;我们不妨看⼀下这张图。 从这张图中可以看出JVM所处的位置#xff0c;同时也能看出它两个作用#xff1a; 1、运⾏并管理Java源码⽂件所⽣成的Class⽂件#xff0c; 2、在不同的操作系统上安装不同的JVM#…JVM全称是Java虚拟机在聊什么是JVM之前我们不妨看⼀下这张图。 从这张图中可以看出JVM所处的位置同时也能看出它两个作用 1、运⾏并管理Java源码⽂件所⽣成的Class⽂件 2、在不同的操作系统上安装不同的JVM从⽽实现了跨平台的保证。
⼀般情况下对于开发者⽽⾔即使不熟悉JVM的运⾏机制并不影响业务代码的开发因为在安装完JDK或者JRE之后其中就已经内置了JVM所以只需要将Class⽂件交给JVM运⾏即可。
但当程序运⾏的过程中出现了问题⽽这个问题发生在JVM层⾯的那我们就需要熟悉JVM的运⾏机制才能迅速排查并解决JVM的性能问题。
我们先看下目前主流的JVM HotSpot的架构图通过这张架构图我们可以看出JVM的大致流程是把一个class文件通过类加载器加载进系统然后放到不同的区域通过编译器编译。 第一个部分Class Files
在Java中Class⽂件是由源码⽂件⽣成的⾄于源码⽂件的内容是每个Java开发者在JavaSE阶段的必备知识这⾥就不再赘述了我们可以关注⼀下Class⽂件的格式⽐如其中的常量池、成员变量、⽅法等这样就能知道Java源码内容在Class⽂件中的表示⽅式
第二个部分Class Loader Subsystem即类加载机制
Class⽂件加载到内存中需要借助Java中的类加载机制。类加载机制分为装载、链接和初始化其主要就是对类进⾏查找、验证以及分配相关的内存空间和赋值
第三个部分Runtime Data Areas也就是通常所说的运⾏时数据区
其解决的问题就是Class⽂件进入内存之后该如何进⾏存储不同的数据以及数据该如何进⾏扭转。比如Method Area通常会储存由Class⽂件常量池所对应的运⾏时常量池、字段和⽅法的元数据信息、类的模板信息等Heap是存储各种Java中的对象实例Java Threads通过线程以栈的⽅式运⾏加载各个⽅法Native Internal Thread可以理解为是加载运⾏native类型的⽅法PC Register则是保存每个线程执⾏⽅法的实时地址。
这样通过运⾏时数据区的5个部分就能很好地把数据存储和运⾏起来了
第四个部分Garbage Collector也就是通常所说的垃圾回收
就是对运⾏时数据区中的数据进⾏管理和回收。回收机制可以基于不同的垃圾收集器⽐如Serial、Parallel、CMS、G1、ZGC等可以针对不同的业务场景选择不同的收集器只需要通过JVM参数设置即可。如果我们打开hotspot的源码可以发现这些收集器其实就是对于不同垃圾收集算法的实现核⼼的算法有3个标记-清除、标记-整理、复制
第五个部分是JIT Compiler和Interpreter
通俗理解就是翻译器Class的字节码指令通过JIT Compiler和Interpreter翻译成对应操作系统的CPU指令只不过可以选择解释执⾏或者编译执⾏在HotSpot JVM默认采用的是这两种⽅式的混合。 第六就是JNI的技术
如果我们想要找Java中的某个native⽅法是如何通过C或者C实现的那么可以通过Native Method Interface来进⾏查找也就是所谓的JNI技术。
通过官⽹上给出的HotSpot架构图我们就能够知道JVM到底是如何运行的了当然在实际操作的过程中我们可以借助⼀些JVM参数例如 和⼀些常⻅的JDK常⻅命令 再结合JDK常⻅⼯具以及第三⽅的⼀些⼯具 我们就可以优雅地分析JVM出现的常⻅问题并对其进⾏调优。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/919085.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!