java虚拟机(java虚拟机是用什么语言编写的它的原理谁能通俗的讲出来吗)

2024-06-05 21:24:42 33

java虚拟机(java虚拟机是用什么语言编写的它的原理谁能通俗的讲出来吗)

本文目录

java虚拟机是用什么语言编写的它的原理谁能通俗的讲出来吗

走向架构师,你必须了解的Java虚拟机高级特性

链接: https://pan.baidu.com/s/1hAPo19keNFHb9ycBctkU2A 密码: iayw

看完了你就知道Java虚拟机了 不要谢我 、

对了

记得点赞关注一下我头条号Java分布式

java虚拟机装在哪个盘比较好

我们知道,Java是当下最为流行的开发语言,无论是网站还是桌面可执行程序都可以用Java来开发。但Java和其它编程语言不同的是,Java应用的运行要依懒于Java虚拟机,如果Java运行宿主机上没有Java虚拟机环境,那Java程序是无法运行的。

那问题来了,Java虚拟机安装位置是否会影响Java运行速度呢?Java虚拟机装在哪个盘好一些呢?

Java虚拟机的性能影响了Java应用的性能

Java虚拟机简称JVM,它是一种虚构出来的计算机,JVM有着自己的架构(如:处理器、指令、内存区等),本质上JVM也是用相关编程语言开发的一款应用。

JVM对于Java而言意味着什么呢?

JVM为Java应用提供运行时环境,Java应用之所以能跨平台也是靠JVM来实现的。现实生活中,电脑的性能会影响运行在此电脑上的应用的性能,同理,JVM的性能也会直接影响Java应用的性能。

JVM安装位置很重要

虽然说JVM可以安装在电脑任何盘符中,但要知道电脑读盘时也是存在性能开销的,JVM如果安装在合理的位置则在一定程序上会提升JVM的运行速度。总体上说JVM安装位置选择可遵循以下规则:

1、盘符尽可能靠前(第一分区速度要高于第二分区),减少硬盘寻址开销

2、如果你的电脑是机械盘+固态盘混合的,建一般系统盘是用固态盘的,JVM也建议安装在固态盘中

3、JVM安装路径中尽可能避免有空格、中文命名的文件夹

以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!

java虚拟机怎么样

走向架构师,你必须了解的Java虚拟机高级特性

链接: https://pan.baidu.com/s/1hAPo19keNFHb9ycBctkU2A 密码: iayw

看完了你就知道Java虚拟机了 不要谢我 、

对了

记得点赞关注一下我头条号Java分布式

《深入理解Java虚拟机》过时了吗

可以负责任的讲,目前没有过时,未来短期内也不会过时。《深入理解Java虚拟机》是否过时,首先取决于 Java 语言本身是否过时了。目前Java在绝大多数领域占有不可忽视的地位。在语言排行榜中,也是长期居于前列。java 本身的可移植性,使得很多服务器以及web后端开发都青睐有加,而其自身语言的特性,以及丰富的库,更让他在众多语言中经久不衰。而作为Java开发中至关重要的虚拟机,开发者能够多大程度上深入理解它的机制,也是区别优秀的Java开发者和普通开发者的标杆之一。所以作为Java的开发者,如果想在技术上有更深入的发展,虚拟机机制是必须要过的一道坎。而《深入理解Java虚拟机》这本书是相对比较经典的介绍该方面知识的书籍,还是值得推荐的。

操作系统为什么不内置java虚拟机

诚邀

其实这个问题是要明白操作系统是什么,操作系统是为了分离硬件于用户程序,操作系统主要用来管理硬件资源,系统调度,其他的功能只是为了效率上提升,内核要增加的一些接口,主要为了减少用户程序跟内核通信造成的效率降低,java虚拟机,是为了执行java程序,制作的一种用户态程序,本身不具备操作系统的能力,仅仅用来解析java的字节码,并不能直接被硬件识别,所以必须要有操作系统转译,而且java虚拟机目的就是为了让java程序可以一次编写,多处执行,但操作系统是可以脱离java虚拟机存在的,所以,应该不会考虑将java虚拟机做到操作系统里

如何正确学会Java虚拟机调优

一点小经验仅供参考:

1) 堆

运行时数据区域,所有类实例和数组的内存均从此处分配。Java 虚拟机启动时创建。对象的堆内存由称为垃圾回收器 的自动内存管理系统回收。

堆由两部分组成:

其中eden+fromspace+tospace也叫年轻代(young),old space叫旧生代.

其中还有S1,S0(在JDK的自带工具输出中会看到),分别指的是Survivor space,存放每次垃圾回收后存活的对象.

Old Generation , 主要存放应用程序中生命周期长的存活对象

垃圾回收主要是对Young Generation块和Old Generation块内存进行回收,YG用来放新产生的对象,经过几次回收还没回收掉的对象往OG中移动,

对YG进行垃圾回收又叫做MinorGC,对OG垃圾回收叫MajorGC,两块内存回收互不干涉

2) 非堆内存

JVM具有一个由所有线程共享的方法区。方法区属于非堆内存。它存储每个类结构,如运行时常数池、字段和方法数据,以及方法和构造方法的代码。它是在 Java 虚拟机启动时创建的。

除了方法区外,Java 虚拟机实现可能需要用于内部处理或优化的内存,这种内存也是非堆内存。 例如,JIT 编译器需要内存来存储从 Java 虚拟机代码转换而来的本机代码,从而获得高性能。

Permanent Generation (图中的Permanent Space) 存放JVM自己的反射对象,比如类对象和方法对象

3) 回收算法和过程

JVM采用一种分代回收 (generational collection) 的策略,用较高的频率对年轻的对象(young generation)进行扫描和回收,这种叫做minor collection,而对老对象(old generation)的检查回收频率要低很多,称为major collection。这样就不需要每次GC都将内存中所有对象都检查一遍。

当一个URL被访问时,内存申请过程 如下:

A. JVM会试图为相关Java对象在Eden中初始化一块内存区域

B. 当Eden空间足够时,内存申请结束。否则到下一步

C. JVM试图释放在Eden中所有不活跃的对象(这属于1或更高级的垃圾回收), 释放后若Eden空间仍然不足以放入新对象,则试图将部分Eden中活跃对象放入Survivor区

D. Survivor区被用来作为Eden及OLD的中间交换区域,当OLD区空间足够时,Survivor区的对象会被移到Old区,否则会被保留在Survivor区

E. 当OLD区空间不够时,JVM会在OLD区进行完全的垃圾收集(0级)

F. 完全垃圾收集后,若Survivor及OLD区仍然无法存放从Eden复制过来的部分对象,导致JVM无法在Eden区为新对象创建内存区域,则出现”out of memory错误”

对象衰老的过程

young generation的内存,由一块Eden(伊甸园,有意思)和两块Survivor Space(1.4文档中称为semi-space)构成。新创建的对象的内存都分配自eden。两块Survivor Space总有会一块是空闲的,用作copying collection的目标空间。Minor collection的过程就是将eden和在用survivor space中的活对象copy到空闲survivor space中。所谓survivor,也就是大部分对象在伊甸园出生后,根本活不过一次GC。对象在young generation里经历了一定次数的minor collection后,年纪大了,就会被移到old generation中,称为tenuring。(是否仅当survivor space不足的时候才会将老对象tenuring? 目前资料中没有找到描述)

剩余内存空间不足会触发GC,如eden空间不够了就要进行minor collection,old generation空间不够要进行major collection,permanent generation空间不足会引发full GC。

4 接下来这部分讲解的是TOMCAT或者其他服务器出现如下错误时的分析:

1、首先是:java.lang.OutOfMemoryError: Java heap space

解释:

Heap size 设置

JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。

提示:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。

提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。

解决方法:

手动设置Heap size

修改TOMCAT_HOME/bin/catalina.bat,在“echo “Using CATALINA_BASE: $CATALINA_BASE“”上面加入以下行:

Java代码

set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m

set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m

或修改catalina.sh

在“echo “Using CATALINA_BASE: $CATALINA_BASE“”上面加入以下行:

JAVA_OPTS=“$JAVA_OPTS -server -Xms800m -Xmx800m -XX:MaxNewSize=256m“

2、其次是:java.lang.OutOfMemoryError: PermGen space

原因:

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。

解决方法:

1. 手动设置MaxPermSize大小

修改TOMCAT_HOME/bin/catalina.bat(Linux下为catalina.sh),在Java代码

“echo “Using CATALINA_BASE: $CATALINA_BASE“”上面加入以下行:

set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m

“echo “Using CATALINA_BASE: $CATALINA_BASE“”上面加入以下行:

set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m

catalina.sh下为:

Java代码

JAVA_OPTS=“$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m“

JAVA_OPTS=“$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m“

JVM的默认设置

堆 (heap)(News Generation 和Old Generaion 之和)的设置

初始分配的内存由-Xms指定,默认是物理内存的1/64但小于1G。

最大分配的内存由-Xmx指定,默认是物理内存的1/4但小于1G。

默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制,可以由-XX:MinHeapFreeRatio=指定。

默认空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制,可以由-XX:MaxHeapFreeRatio=指定。

服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小,所以上面的两个参数没啥用。

-Xmn 设置young generation的heap大小

-XX:MinHeapFreeRatio与-XX:MaxHeapFreeRatio设定空闲内存占总内存的比例范围,这两个参数会影响GC的频率和单次GC的耗时。-XX:NewRatio决定young与old generation的比例。Young generation空间越大,minor collection频率越低,但是old generation空间小了,又可能导致major collection频率增加。-XX:NewSize和-XX:MaxNewSize直接指定了young generation的缺省大小和最大大小。

非堆内存 的设置

默认分配为64M

-XX:PermSize设置最小分配空间,-XX:MaxPermSize设置最大分配空间。一般把这两个数值设为相同,以减少申请内存空间的时间。

再讲解和笔记下,JDK下的一些相关看内存管理工具的使用:

查看jvm内存状态:

jstat -gcutil pid 1000 20

异常情况的例子

jstat -gcutil pid 1000 20

S0 S1 E O P YGC YGCT FGC FGCT GCT

0.00 0.00 99.99 82.51 53.11 2409 1.205 10117 7250.393 7251.598

0.00 0.00 83.42 82.55 53.10 2409 1.205 10118 7252.650 7253.855

0.00 0.00 56.06 82.46 53.10 2410 1.205 10120 7254.467 7255.672

0.00 0.00 32.11 82.55 53.10 2411 1.205 10121 7256.673 7257.877

0.00 0.00 99.99 82.55 53.10 2412 1.205 10123 7257.026 7258.231

0.00 0.00 76.00 82.50 53.10 2412 1.205 10124 7259.241 7260.446

这个数据显示Full GC频繁发生。

正常情况的例子

S0 S1 E O P YGC YGCT FGC FGCT GCT

0.00 0.00 0.24 55.39 99.60 171 0.667 1339 393.364 394.031

0.00 0.00 0.24 55.39 99.60 171 0.667 1339 393.364 394.031

0.00 0.00 0.24 55.39 99.60 171 0.667 1339 393.364 394.031

0.00 0.00 0.24 55.39 99.60 171 0.667 1339 393.364 394.031

0.00 0.00 0.24 55.39 99.60 171 0.667 1339 393.364 394.031

0.00 0.00 0.24 55.39 99.60 171 0.667 1339 393.364 394.031

参数含义:

S0:Heap上的 Survivor space 0 段已使用空间的百分比

S1:Heap上的 Survivor space 1 段已使用空间的百分比

E: Heap上的 Eden space 段已使用空间的百分比

O: Heap上的 Old space 段已使用空间的百分比

P: Perm space 已使用空间的百分比

YGC:从程序启动到采样时发生Young GC的次数

YGCT:Young GC所用的时间(单位秒)

FGC:从程序启动到采样时发生Full GC的次数

FGCT:Full GC所用的时间(单位秒)

GCT:用于垃圾回收的总时间(单位秒)

2 Dump出内存

2.1 找出要dump的线程pid

在Linux下,使用ps –aux

2.2 Dump出内存使用详情

可以通过命令:

jmap -dump:file=a.hprof pid

例如:jmap -heap 2343,可以看到

Attaching to process ID 2343, please wait...

Debugger attached successfully.

Server compiler detected.

JVM version is 11.0-b16

using thread-local object allocation.

Parallel GC with 8 thread(s)

Heap Configuration:

MinHeapFreeRatio = 40

MaxHeapFreeRatio = 70

MaxHeapSize = 4294967296 (4096.0MB)

NewSize = 2686976 (2.5625MB)

MaxNewSize = -65536 (-0.0625MB)

OldSize = 5439488 (5.1875MB)

NewRatio = 2 (YG,OG 大小比为1:2)

SurvivorRatio = 8

PermSize = 21757952 (20.75MB)

MaxPermSize = 268435456 (256.0MB)

Heap Usage:

PS Young Generation

Eden Space:

capacity = 1260060672 (1201.6875MB)

used = 64868288 (61.86322021484375MB)

free = 1195192384 (1139.8242797851562MB)

5.148028935546367% used

From Space:

capacity = 85524480 (81.5625MB)

used = 59457648 (56.70323181152344MB)

free = 26066832 (24.859268188476562MB)

69.52120375359195% used

To Space:

capacity = 85852160 (81.875MB)

used = 0 (0.0MB)

free = 85852160 (81.875MB)

0.0% used

~~~~~~~~~~~~~~~~~~~~~~~~~~这三块为上面所说的YG大小和使用情况

PS Old Generation

capacity = 2291138560 (2185.0MB)

used = 1747845928 (1666.8757705688477MB)

free = 543292632 (518.1242294311523MB)

76.28722062099989% used

~~~~~~~~~~~~~~~~~~~~~~~~~~OG大小和使用情况

PS Perm Generation

capacity = 108265472 (103.25MB)

used = 107650712 (102.6637191772461MB)

free = 614760 (0.5862808227539062MB)

99.43217353728436% used

jstat

jstat是vm的状态监控工具,监控的内容有类加载、运行时编译及GC。

使用时,需加上查看进程的进程id,和所选参数。以下详细介绍各个参数的意义。

jstat -class pid:显示加载class的数量,及所占空间等信息。

jstat -compiler pid:显示VM实时编译的数量等信息。

jstat -gc pid:可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。

jstat -gccapacity:可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量。

jstat -gcnew pid:new对象的信息。

jstat -gcnewcapacity pid:new对象的信息及其占用量。

jstat -gcold pid:old对象的信息。

jstat -gcoldcapacity pid:old对象的信息及其占用量。

jstat -gcpermcapacity pid: perm对象的信息及其占用量。

jstat -util pid:统计gc信息统计。

jstat -printcompilation pid:当前VM执行的信息。

除了以上一个参数外,还可以同时加上 两个数字,如:jstat -printcompilation 3024 250 6是每250毫秒打印一次,一共打印6次,还可以加上-h3每三行显示一下标题。

例子:

jstat -gcutil pid 1000 20

S0 S1 E O P YGC YGCT FGC FGCT GCT

47.49 0.00 64.82 46.08 47.69 20822 2058.631 68 22.734 2081.365

0.00 37.91 38.57 46.13 47.69 20823 2058.691 68 22.734 2081.425 这里发生了一次YG GC,也就是MinorGC,耗时0.06s

46.69 0.00 15.19 46.18 47.69 20824 2058.776 68 22.734 2081.510

46.69 0.00 74.59 46.18 47.69 20824 2058.776 68 22.734 2081.510

0.00 40.29 19.95 46.24 47.69 20825 2058.848 68 22.734 2081.582

MajorGC平均时间:22.734/68=0.334秒

MinorGC平均时间:2058.691/20823=0.099秒

java虚拟机内存模型

Java虚拟机相当于一个抽象的计算机操作系统,其管理的内存区域大体上可以分为栈和堆,就像c或c++中对内存的分类一样,但这样的分类对于Java虚拟机来说太过粗浅,实际上Java虚拟机管理的内存区域分为程序计数器、虚拟机栈、本地方法栈、堆和方法区,根据各区域是属于线程私有还是由线程共享,这些区域可以分为两类,下面分别进行说明。

请问Java语言有哪些特点什么是Java虚拟机

Java 语言是一种分布式的面向对象语言,具有面向对象、平台无关性、简单性、解释执行、多线程、安全性等很多特点。

Java虚拟机(Java Virtual Machine, JVM)是Java程序的软件环境,Java虚拟机可以理解成一个以字节码为机器指令的CPU。在任何操作系统中,只要JVM存在,Java程序都可以运行,真正实现了程序的可移植性。

Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。

有木有关于Java虚拟机的书籍推荐感激不尽

一、Java从入门到精通《Java从入门到精通(第3版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用Java语言进行程序开发需要掌握的知识。《Java从入门到精通(第3版)》推荐:“软件开发视频大讲堂”丛书系清华社“视频大讲堂”重点大系之一。该大系包括多个子系列,每个子系列的图书在其同品种的图书中销售名列前茅,

二、Java核心技术(卷1):基础知识Java领域最有影响力和价值的著作之一,与《Java编程思想》齐名,10余年全球畅销不衰,广受好评;2)根据Java SE 7全面更新,系统全面讲解Java语言的核心概念、语法、重要特性和开发方法,包含大量案例,实践性强

三、Java编程思想《Java编程思想(第4版)》书共22章,包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常处理错误、字符串、泛型、数组、容器深入研究、Iava’UO系统、枚举类型、并发以及图形化用户界面等内容。这些丰富的内容,包含了Java语言基础语法以及高级特性,适合各个层次的Java程序员阅读,同时也是高等院校讲授面向对象程序设计语言以及Java语言的绝佳教材和参考书。

四、深入理解Java虚拟机:JVM高级特性与最佳实践第1版两年内印刷近10次,4家网上书店的评论近4?000条,98%以上的评论全部为5星级的好评,是整个Java图书领域公认的经典著作和超级畅销书,繁体版在台湾也十分受欢迎。第2版在第1版的基础上做了很大的改进:根据最新的JDK 1.7对全书内容进行了全面的升级和补充;增加了大量处理各种常见JVM问题的技巧和最佳实践;增加了若干与生产环境相结合的实战案例;对第1版中的错误和不足之处的修正;等等。第2版不仅技术更新、内容更丰富,而且实战性更强。五、Sun 公司核心技术丛书:Effective Java中文版在Java编程中78条极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。通过对Java平台设计专家所使用的技术的全面描述,揭示了应该做什么,不应该做什么才能产生清晰、健壮和高效的代码。第2版反映了Java 5中最重要的变化,并删去了过时的内容。

六、图灵程序设计丛书:Java程序员修炼之道《Java程序员修炼之道》分为四部分,第一部分全面介绍Java 7的新特性,第二部分探讨Java关键编程知识和技术,第三部分讨论JVM上的新语言和多语言编程,第四部分将平台和多语言编程知识付诸实践。从介绍Java 7的新特性入手,《Java程序员修炼之道》涵盖了Java开发中最重要的技术,比如依赖注入、测试驱动的开发和持续集成,探索了JVM上的非Java语言,并详细讲解了多语言项目, 特别是涉及Groovy、Scala和Clojure语言的项目。此外,书中含有大量代码示例,帮助读者从实践中理解Java语言和平台。

七、Head First Java(中文版)《Head First Java》(中文版)(第2版)是本完整的面向对象(object-oriented,OO)程序设计和Java的学习指导。此书是根据学习理论所设计的,让你可以从学习程序语言的基础开始一直到包括线程、网络与分布式程序等项目。最重要的,你会学会如何像个面向对象开发者一样去思考。

八、Java 7入门经典《Java 7入门经典》是关于Java语言讲解最为细致、全面的入门书籍,介绍了使用最新的Java JDK 7开发程序所需要的所有基础知识。书中包含大量的示例,清晰地解释了涉及的关键概念,演示了Java开发的复杂细节。

JAVA虚拟机中是如何加载JAVA类的

我们平时都知道通过javac命令将

.java

文件编译成

.class

文件,之后这个class文件就可以“被运行”了,但是我们需要搞清楚的是这个class文件在虚拟机中究竟是怎么玩的。

要想具体搞清楚java类是如何加载的Java虚拟机中,我们需要搞清楚以下几个问题:

  • 一个Java类什么时候开始被加载?

  • 加载Java类的过程是怎样的?

一个Java类从被加载到JVM内存中到这个类被卸载,主要包含以下七个步骤的生命周期。

一个Java类什么时候开始被加载?

Java虚拟机并没有规定在什么时候需要加载Java类,但是对于Java类的初始化却有明确的规定,有且只有以下5中情况时候便会立即触发类的“初始化”动作:

  1. 遇到new、getstatic、putstatic或invokestatic这4条字节码指令时,如果类没有初始化,则需要先触发其初始化,代码示例如下:

  2. 使用

    java.lang.reflect

    包的方法对类进行反射调用的时候,如果类没有进行过初始化,则需要先触发其初始化,代码示例如下:

  3. 当初始化一个类的时候,如果发现其父类还没有进行过初始化,则需要先触发其父类的初始化。这个很好理解,就是当一个子类遇到new、getstatic、putstatic或invokestatic这4条字节码指令时,如果父类还没有初始化,则先初始化父类。

  4. 当虚拟机启动时,用户需要指定一个要执行的主类(包含main()方法的那个类),虚拟机会先初始化这个主类。

  5. 当使用JDK1.7的动态语言支持时,如果一个java.lang.invoke.MethodHandle实例最后的解析结果REF_getStatic、REF_putStatic、REF_invokeStatic的方法句柄,并且这个方法句柄所对应的类没有进行过初始化,则需要先触发其初始化。这块属于动态加载的范畴,本质上还是需要需要new、getstatic、putstatic或invokestatic这4条字节码指令。

加载Java类的过程是怎样的?

知道了类被加载的条件后,我们需要知道一个Java类通过怎样的过程被加载到Java虚拟机中去了。

这个过程其实就是把一个

.class

文件中的java类相关信息加载到内存中,通过验证、准备、解析等阶段,最终生成一个存在于Java虚拟机内存中的

java.lang.Class

对象。

这里面涉及到的知识点比较多:

  • 如何验证一个

    .class

    文件是符合Java虚拟机规范的?

  • 准备阶段都做哪些事情?

  • 类加载机制是怎样的?

  • 什么是双亲委派模型?

  • 加载完的类存储在Java虚拟机的什么内存区域?

  • 加载的类GC可以回收吗?如果可以回收需要满足什么样的条件才可以回收一个类?

推荐大家一定要阅读《深入理解Java虚拟机》这本Java程序员必读书籍!并且不只是读一遍,要不停的读,不停的品!


以上就是我个人对“JAVA虚拟机中是如何加载JAVA类的?”这个问题的一些解答,这里只是给大家开个一个头,需要大家再继续深耕下去。

我是【java架构设计】,关注我,持续为您提供Java领域优质内容!

java虚拟机(java虚拟机是用什么语言编写的它的原理谁能通俗的讲出来吗)

本文编辑:admin

更多文章:


奔腾t77三大件怎么样(一汽奔腾的质量怎么样三大件可靠吗)

奔腾t77三大件怎么样(一汽奔腾的质量怎么样三大件可靠吗)

本文目录一汽奔腾的质量怎么样三大件可靠吗一汽奔腾T77和现代ix25,该如何选择哪款车更可靠东风AX7、传祺GS5、哈弗F7和奔腾T77哪个更适合家用1.4980L是多少排量奔腾t77奔腾t77咋样奔腾T77这款车适合多大年纪的人开年轻人会

2023年11月17日 04:20

有米科技股份有限公司(有人能详细帮我介绍一下点米科技吗)

有米科技股份有限公司(有人能详细帮我介绍一下点米科技吗)

这篇文章给大家聊聊关于有米科技股份有限公司,以及有人能详细帮我介绍一下点米科技吗对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录有人能详细帮我介绍一下点米科技吗点米科技是一家科技公司吗国内pcb上市公司有哪些蓝思科技总部在哪里

2024年9月17日 05:00

106短信平台(如何申请106开头的短信平台)

106短信平台(如何申请106开头的短信平台)

本文目录如何申请106开头的短信平台106短信平台哪个好要求三网合一的106短信平台是什么企业应如何选择106短信平台106短信平台哪个正规106短信平台怎么关闭如何申请106开头的短信平台如果是找运营商申请的话就比较麻烦,要SP证,还要有

2024年7月23日 17:00

vista系统什么时候出的(VISTA系统是什么时候出的)

vista系统什么时候出的(VISTA系统是什么时候出的)

本文目录VISTA系统是什么时候出的vista是哪一年的系统windows vista系统什么时候出vista 系统是什么VISTA系统是什么时候出的Windows Vista 就是Windows NT 6.0。虽然有诸多新功能,但有如下致

2024年6月2日 20:02

华为儿童手表3s刷机教程图解(儿童手表怎么刷机)

华为儿童手表3s刷机教程图解(儿童手表怎么刷机)

本文目录儿童手表怎么刷机捡到华为儿童手表怎么刷机华为手表3s怎么把它不用软件就恢复出厂设置华为儿童手表3s刷机教程图解儿童手表怎么刷机1、双击打开界面。2、向左滑动4下,往下滑动,找到“绑定号”。3、打开二维码界面,连续点击二维码5下后长按

2024年6月6日 04:56

3dmark手机(手机3dMark跑分6825算高吗)

3dmark手机(手机3dMark跑分6825算高吗)

本篇文章给大家谈谈3dmark手机,以及手机3dMark跑分6825算高吗对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录手机3dMark跑

2023年12月25日 20:40

ipad4和ipad3对比(ipad3和ipad4的区别是什么)

ipad4和ipad3对比(ipad3和ipad4的区别是什么)

本文目录ipad3和ipad4的区别是什么ipad3跟ipad4有什么区别iPad3 iPad4该如何选择ipad3 4分别是什么处理器ipad各代对比ipad3和ipad4的区别ipad3和ipad4的区别是什么ipad1ipad2ipa

2023年4月30日 05:40

mp3推荐学生(学生党买什么mp3比较好,价格最好在200以下,要有歌单之类的,内存8g以上(以前没用过mp3))

mp3推荐学生(学生党买什么mp3比较好,价格最好在200以下,要有歌单之类的,内存8g以上(以前没用过mp3))

本文目录学生党买什么mp3比较好,价格最好在200以下,要有歌单之类的,内存8g以上(以前没用过mp3)什么MP3性价比高,学生党,最好带屏幕,只听歌就够了,顺便说下什么耳机好什么品牌的mp3好适合学生使用学生党买什么mp3比较好,价格最好

2024年7月22日 08:56

三星3g手机能下载微信吗(三星手机能下微信吗)

三星3g手机能下载微信吗(三星手机能下微信吗)

本文目录三星手机能下微信吗三星手机可以下微信吗我刚购了一款三星3G手机,请问如何使用微信三星三g手机下载不了微信三星W799 天翼3G的,到底能不能安装微信三星手机能下微信吗若手机不能下载软件,建议:1.检查手机内存是否已满,打开手机设定-

2024年7月17日 22:57

苹果siri侵权(小i机器人起诉苹果Siri侵权,苹果会如何处理此事)

苹果siri侵权(小i机器人起诉苹果Siri侵权,苹果会如何处理此事)

本文目录小i机器人起诉苹果Siri侵权,苹果会如何处理此事上海一公司向苹果索赔100亿,这其中的缘由是什么苹果的siri功能会泄漏隐私吗上海一公司要求停售iPhone,向苹果索赔100亿,事件最新进展如何小i机器人起诉苹果Siri侵权,事情

2024年6月6日 19:25

便携数码相机排行榜(有没有日常使用的便携相机推荐)

便携数码相机排行榜(有没有日常使用的便携相机推荐)

本文目录有没有日常使用的便携相机推荐哪种数码相机最适合家庭旅游使用最适合旅行的数码相机是哪款有没有日常使用的便携相机推荐对于摄影爱好者来说,单反和微单相机固然可以提供出色的拍摄性能,但是体积上的限制注定了不能天天随身携带。目前市场上还有一类

2024年6月6日 10:12

惠普笔记本电脑清灰(惠普笔记本清理灰尘)

惠普笔记本电脑清灰(惠普笔记本清理灰尘)

本文目录惠普笔记本清理灰尘hp笔记本如何清理灰尘惠普笔记本清灰多少钱惠普笔记本售后清灰多久惠普笔记本5390怎么打开清灰惠普笔记本清理灰尘打电话问一下,去他的服务点是最放心的。其实有人电脑用到坏都未必清过尘,但清一清也是对电脑好的。自己拆都

2023年8月19日 09:00

苹果11双电信卡技巧(苹果11怎么装两张卡)

苹果11双电信卡技巧(苹果11怎么装两张卡)

本文目录苹果11怎么装两张卡iphone11怎么双卡双待iphone11双卡流量怎么设置怎么可以苹果手机同时插两张电信卡苹果11双卡双待怎么用苹果11怎么使用双卡苹果11手机两张卡如何搭配最好苹果11怎么装两张卡苹果11插两张卡方法如下:1

2024年7月20日 09:05

索尼克手机游戏(一个游戏要偷到指定物品并逃出去并要找出三个狐狸是什么手机游戏)

索尼克手机游戏(一个游戏要偷到指定物品并逃出去并要找出三个狐狸是什么手机游戏)

本文目录一个游戏要偷到指定物品并逃出去并要找出三个狐狸是什么手机游戏推荐几个画面精美又好玩的手机单机游戏有一个左右摇晃手机,一个小怪物就左右移动吃金币上升的游戏索尼克手机游戏有哪些有个手机游戏,角色和索尼克有点像,手能伸的很长来回荡漾,蓝色

2024年7月22日 08:23

oppor5现在多少钱一部(oppor5价格多少钱)

oppor5现在多少钱一部(oppor5价格多少钱)

“oppor5现在多少钱一部”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看oppor5现在多少钱一部(oppor5价格多少钱)!本文目录oppor5价格多少钱OPPOR5现在市场价多少钱OPPOR5市场价最低多少钱oppo

2024年5月21日 07:48

手机出货量下降(中国信通院:7月国内市场手机出货量同比下降30.6%,这反映出了什么)

手机出货量下降(中国信通院:7月国内市场手机出货量同比下降30.6%,这反映出了什么)

其实手机出货量下降的问题并不复杂,但是又很多的朋友都不太了解中国信通院:7月国内市场手机出货量同比下降30.6%,这反映出了什么,因此呢,今天小编就来为大家分享手机出货量下降的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧

2024年1月14日 01:40

超便携笔记本报价(超便携笔记本买什么牌子好性价比高的)

超便携笔记本报价(超便携笔记本买什么牌子好性价比高的)

大家好,关于超便携笔记本报价很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于超便携笔记本买什么牌子好性价比高的的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本

2024年3月12日 15:35

佳能g12屏幕不显示了(佳能G12屏幕闪烁,黑屏怎么办)

佳能g12屏幕不显示了(佳能G12屏幕闪烁,黑屏怎么办)

大家好,关于佳能g12屏幕不显示了很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于佳能G12屏幕闪烁,黑屏怎么办的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2024年6月6日 20:17

手机内存卡怎么安装(手机内存卡怎么安装 如何安装华为手机的内存卡)

手机内存卡怎么安装(手机内存卡怎么安装 如何安装华为手机的内存卡)

本文目录手机内存卡怎么安装 如何安装华为手机的内存卡内存卡怎么插到手机上 一步步详细教你华为手机如何装卡手机内存卡怎么换内存卡怎么用在手机上vivo手机怎么插内存卡荣耀9怎么安装内存卡oppo手机内存卡怎么装进去如何安装华为手机的内存卡(S

2023年6月11日 02:40

手机自由捏人建模软件3d(画凹凸自设的软件)

手机自由捏人建模软件3d(画凹凸自设的软件)

大家好,手机自由捏人建模软件3d相信很多的网友都不是很明白,包括画凹凸自设的软件也是一样,不过没有关系,接下来就来为大家分享关于手机自由捏人建模软件3d和画凹凸自设的软件的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本

2024年3月6日 01:55

近期文章

本站热文

4008827777转人工客服(4008827777饿了么怎么转人工电话)
2024-07-23 14:41:37 浏览:503
标签列表

热门搜索