首页 > 编程语言 >Java虚拟机整体思路

Java虚拟机整体思路

时间:2023-04-11 09:00:30浏览次数:40  
标签:Java 字节 虚拟机 编译 编译器 思路 加载

我们日常编程的Java编程是在Java语言规范代码,通过javac前端编译器编译器,产生字节码规范,此时我们应该对字节码文件结构有一个大致的认识,此时我们了解了Java虚拟机内存面局(专业术语叫运行时数据区),类加载器通过加载器将字节码文件加载到内存中(此时应该对类加载的过程有一个大致的了解),Java类信息就会存储在我们的方法区中,如果创建对象,那么数据对象就会放到Java堆中,如果调用方法就用到PC寄存器、Java虚拟机栈、本地方法栈等结构。
从源代码到机器码,使用AOT编译器,从字节码到机器码我们可以选择解释执行,也可以选择编译执行(JIT),编译执行又分为C1编译模式和C2编译模式。C1优化相对保存但编译速度快速,C2优化比较激进,但编译速度比C1慢,但是编译质量相对较好。

标签:Java,字节,虚拟机,编译,编译器,思路,加载
From: https://www.cnblogs.com/shushulelan/p/17305021.html

相关文章

  • java.lang.NoSuchMethodException: com.innovation.web.BuyServlet.$%7Bid%7D(javax.s
    问题描述我在html页面写了get到删除某条记录的url路径里去,然后一直显示这个错误,也到不了相应的后台方法里面去,就很离谱欸家人们!问题解决听从友友的建议,将之前的/deleteCarts/${id}改成了之前用过的那种样式,也就是/deleteCarts?id=${id},然后就成功跳转到那个后台servlet里面啦!......
  • Java实现自定义LRU算法
    classLRUCache{//key->Node<key,val>privateHashMap<Integer,Node>map;//Node(k1,v1)<->Node(k2,v2)privateDoubleListcache;//最大容量privateintcap;publicLRUCache(intcapacity){this.c......
  • kettle从入门到精通 第十一课 kettle javascript 解析json数组
    1、json步骤虽然可以解析json数组,但是不够灵活。通过javascript步骤来解析json数组比较灵活,且可以按照需要组装数据流转到下个步骤。1)步骤名称:可以自定义2)TransformScripts:当前步骤编写的javascript脚本3)TransformConstants:重新定义的静态常量,用于控制数据行发生的情况。您必......
  • Java8统计金额demo
    Java8统计金额demopackagecom.example.core.mydemo.java8;publicclassGoodsPriceDTO{privateStringgoodName;privateIntegeramount;publicStringgetGoodName(){returngoodName;}publicvoidsetGoodName(StringgoodName){......
  • Java8 - sum求和,将 List 集合转为 Map,key去重(groupingBy),sorted排序
    Java8-sum求和,将List集合转为Map,key去重(groupingBy),sorted排序packagecom.example.core.mydemo.java8;publicclassGoodsPriceDTO{privateIntegerid;privateStringgoodName;privateIntegeramount;//重写toString方法,System可以打印输出......
  • JAVA基础-StringUtils
    依赖<!--commons--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.10</version></dependency>举例importorg.apache.commons.lang......
  • Java 基础
    一、基础1.标识符注意点所有的标识符都应该以字母(A-Z或者a-z),美元符($),或者下划线(_)开始首字符之后可以是字母,美元符,下划线或者数字的任何字符组合不能使用关键字作为方法名或者变量名标识符是大小写敏感的合法标识符举例:age、$salary、_value、__1_value非法标识符举例:1......
  • Java并发(一)----进程、线程、并行、并发
    一、进程与线程进程程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理IO的当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进......
  • 剑指offer38(Java)-字符串的排列(中等)
    题目:输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 示例:输入:s="abc"输出:["abc","acb","bac","bca","cab","cba"] 限制:1<=s的长度<=8来源:力扣(LeetCode)链接:https://leetcode.cn/pr......
  • LINUX 下如何判断服务器是虚拟机,还是物理机
    要检查服务器是物理服务器还是虚拟服务器,最简单的检查方法是使用dmidecode命令。下面推荐几种常用操作。方法一#如果是物理系统,则应该看到制造商的名称,例如Dell,Lenovo等。[root@laocalhost~]#sudodmidecode-ssystem-manufacturerDellInc.#如果是虚拟系统,则应该看到类......