深入理解jvm第四版pdf(深入理解JVM之ClassLoader)

2025-08-24 12:45:01 :0

深入理解jvm第四版pdf(深入理解JVM之ClassLoader)

各位老铁们好,相信很多人对深入理解jvm第四版pdf都不是特别的了解,因此呢,今天就来为大家分享下关于深入理解jvm第四版pdf以及深入理解JVM之ClassLoader的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

本文目录

深入理解JVM之ClassLoader

在编写Java程序时需要使用javac命令将.java后缀名的文件编译成.class文件,然后JVM通过执行.class文件来运行我们写的程序,那么JVM怎么才能执行.class文件呢?
这就需要类加载器了。

在jdk中找到sun.misc.Launcher文件,这个文件是JVM中的启动器实例,在该类内部有 getLauncher() 方法

它返回的是 launcher 实例

在构造方法调用时会初始化 ExtClassLoader和AppClassLoader(BootstrapClassLoader会在Java虚拟机创建之后进行加载,所以是在此之前)。

通过点击 getXxxClassLoader() 跟到最后可以看到

注意: 我们查看ExtClassLoader时会发现这里的parent是null,而查看AppClassLoader时传入的parent是ExtClassLoader的对象实例。所以这里也就印证了上面画的图。

加载步骤:

找到某个ClassLoader,这里以AppClassLoader为例

在AppClassLoader中搜索 findClass() 方法是找不到的,所以找到每个加载器共同的父类 URLClassLoader ,在这里可以看到 findClass() 方法。

findClass 方法的作用是从指定的路径找到传入的文件名称的.class文件,并返回回去,该方法的主要逻辑在 run() 方法中。

从前面可以知道,要想实现classLoader只需要继承ClassLoader类并重写 findClass 和 loadClass 方法即可。

在桌面创建了一个名为Test的Java文件,并使用javac命令进行编译。

运行结果:

从运行结果可以看出,自定义的类加载器已经完成了对指定文件的加载,并正确的执行了方法。

《深入理解JVM虚拟机》读书笔记-标记阶段的两种算法

在堆里存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为己经死亡的对象,GC才会在执行垃圾回收时,释放掉其所占用的内存空间,因此这个过程我们可以称为垃圾标记阶段。

那么在JVM中究竟是如何标记一个死亡对象呢?简单来说,当一个对象已经不再被任何的存活对象继续引用时,就可以宣判为已经死亡。

判断对象存活一般有两种方式:引用计数算法和可达性分析算法。

《font color=red》 垃圾回收这个动作通过推理可知,至少需要两个步骤:1.判断对象是否是垃圾 2.回收垃圾 ;这里标记阶段就是第一步,判断对象是否是垃圾。 《/font》

meta space 和 heap逻辑上是都有GC和OOM的,pc计数器没有GC,OOM,stack没有GC,有SOF。

方法区确实有GC,但是不是虚拟机必须清理的,所以这里说的GC主要说的是heap

实现简单,垃圾对象便于辨识;判定效率高,回收没有延迟性。

其实这种引用计数法的实现思路是很容易让大家想到的,即所有对象都维护一个变量存储当前对象被引用的次数,如果为0就标记为垃圾,但是这种方式必然两方面的确定:

1.开销内存空间

2.每次变量的重新赋值,对象应用的变化,都会导致,对象引用计数器的动态更新。

以上两点是可以直接推理出的缺点。

循环引用指的是一个变量P引用一个对象A,对象A的引用计数器属性为1,同时这个对象里面的一些变量,指向对象B,而对象B中有变量指向对象C,对象C中有变量指向对象A,这样就造成了一个循环引用,而此时对象A的引用计数器属性在原有的基础上+1,变成2。

一旦这个变量P不再指向对象A,那么此时其引用计数器属性变成了1,但是因为对象循环引用其引用计数器属性不会变成0,那么其也就不会被标记为垃圾,造成内存泄露。

运行结果

从运行结果中可以清楚看到内存回收日志中包含“4603K-》210K”,意味着虚拟机并没有因为这两个对象互相引用就放弃回收它们,这也从侧面说明了Java虚拟机并不是通过引用计数算法来判断对象是否存活的。

  当前主流的商用程序语言(Java、C#,上溯至前面提到的古老的Lisp)的内存管理子系统,都是通过可达性分析(Reachability Analysis)算法来判定对象是否存活的。这个算法的基本思路就是通过一系列称为“GC Roots”的根对象作为起始节点集,从这些节点开始,根据引用关系向下搜索,搜索过程所走过的路径称为“引用链”(Reference Chain),如果某个对象到GC Roots间没有任何引用链相连,或者用图论的话来说就是从GC Roots到这个对象不可达时,则证明此对象是不可能再被使用的。

  即 将活跃的引用都放到一组集合中,每个存放到集合中的引用都作为根节点即GC Roots,每个被引用的对象都通过一条线和GC Roots连接,那么只有在内存中被GC Roots连接的对象才是存活的对象 。

上面列了那么多,其实就是想说,因为Root采用栈方式存放变量和指针,所以如果一个指针它保存了堆内存里面的对象,但是自己又不存放在堆内存里面,那它就是一个Root。将堆外,所有对于堆的指向都拷贝到GC Roots中。

jvm入门教程

jvm入门教程。
一、写在前面;首先,本篇文章并没有涉及原理,而是在笔者撸了《深入理解Java虚拟机》好几遍的基础上讲解自己的经验,从一个新手到现在明白JVM是个什么玩意,怎么去理解和明白,讲解这样一个经验而已。这篇文章并对JVM并没有挖掘得很深,在下目前暂时也没有这个能力,只是以通熟易懂的方式,让读者理解JVM是个什么玩意。下面开始我的讲解。
二、谁说人神不得相爱——Java的跨平台;理解Java的跨平台特性,是对JVM最直观的认识。所谓的“一次编译,到处运行”,为什么C/C++却不能实现呢?这一类语言直接使用物理硬件(或者说操作系统的内存模型),那么不同系统之间的内存模型是不同的,比如说Linux和Window,这就意味,在Window编译好的代码,却不能在Linux上运行。《深入理解Java虚拟机》记录说,Java虚拟机规范中试图定义一种Java内存模型(JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台上都能达到一致性的并发效果。举个现实的例子,一个只会听说中文的人,要如何和一个只会听说英文的人交流,在Java的世界里,采用的方式即是给两边的人各配一名翻译官(JVM),所以,这就是为什么JVM要有window版本,也要有Linux版本。众所周知,Java的程序编译的最终样子是.class文件,不同虚拟机的对每一个.class文件的翻译结果都是一致的。而对于C/C++而言,编译生成的是纯二进制的机器指令,是直接面对计算机系统的内存,但是,java程序的编译结果是面向JVM,是要交付给JVM,让他再做进一步处理从而让计算机识别运行,这就是所谓的“屏蔽掉各种硬件和操作系统的内存访问差异”。这里的特点又和面向对象推崇的面向接口有着不可描述的关系,我只需要有这么个规范,不需要去知道接触你的底层原理实现。
三、活在梦里的真实——虚拟机;JVM,全称JavaVirtualMachine,英文为Java虚拟机,简单的探讨一下虚拟机这三个字,对后面的学习也是挺舒服的。百度百科描述说,“虚拟机(VirtualMachine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统”,但是虚拟机本质还是该计算机系统的一个进程,可以类比香港澳门具有高度自治,但本质上他们还是属于中国的。为了方便描述,我们把整个计算机当成一幢大楼,而虚拟机则是某一个楼层。大楼划分了一个区域给一个楼层,让这个楼层自己管理自己,也就对应着,计算机划分了一个内存给JVM,让JVM自己管理自己。下面这张图是笔者的阿里云服务器上的内存使用情况,可以看到JVM足足占用了接近500M的内存。那么问题来了,JVM要这么多的内存干什么,这里面又是怎么划分?
四、你来到我的世界里——内存;在现阶段无论什么编程语言,都是由人类设计发明的,编程语言对于人类来讲,是方便自己实现目的的工具之一,所以,编程语言看似是全新的东西,但是这里面处处都可以看见人类思想的影子,都可以从现实中找到相似的例子。接着上面的例子,JVM是作为某一个楼层,单独占有了一大块区域(内存)。这个楼层中,有主厅,客厅,客房,这四个之间的区别之一就行,主厅和客厅是公有的,而主房和客房是私有的,这里对应到JVM层次上即是,有某几块内存,是无论是谁访问,有多少人(线程)访问,这些共有区域都可以为他们服务,而客房,私有区域,假定我们这个楼层比较牛逼,来了多少个客人,就会单独为他们建造每一件客房,每个客人都有自己私有区域,A客人是进不了B客人的房间。对应的JVM的层次,即是JVM运行时数据区域划分为两大块,线程隔离的区域和线程共享的区域。我们可以简单的理解为,每个客人即是一条线程。具体对应的区域又是如何划分的,又有什么作用,这里只能从概念上理解和记忆了,传送门在此轻松认识JVM运行时数据区域。
五、离开我,却没有带走你的痕迹——什么是垃圾;回想起小时候,很多小伙伴都会一起结伴过来我家玩耍,虽然大家玩得很开心,等到了时间点之后,他们就拍拍屁股走人,留下我家里一片狼藉,这个时候如果我不收拾一下垃圾的话,我老妈估计就要来拍拍我的屁股了。客人(线程)同样如此,我来过你的世界,总会留下属于我的痕迹,是不是垃圾,就要看你自己如何判定了。这里就引出另一个问题,我怎么判断是哪个才是垃圾,哪个不是垃圾,只不过是玩耍的时候,我或者小伙伴随手把老妈的戒指扔到地上而已。站在人类的视角上看,一眼就知道哪个是垃圾,哪个不是垃圾,但是计算机可不是这样,计算机有些时候确实不如人类,明明人类一眼或者几秒能完成的事情,要让计算机同样能够完成对应的功能的话,需要付出千万倍的代价才能够实现。笔者的老妈在家里收拾垃圾的时候,为了确保扔掉的东西是垃圾,她会将这个东西,一个一个问家里的每个人,这个东西是不是你的,你还要不要,当没有一个人承认说这个东西是属于他的时候,老妈就将这个东西视为垃圾,当有人说这个不是垃圾,是他的宝贝的时候,我老妈就这个东西标记一下。JVM采用的是类似的做法,每个对象到GCROOT都有一定的联系和路径可达,当某个对象,对于GCROOT不可达(即没有人说这个东西是属于他的)的对象,JVM则判定为垃圾。JVM里称此行为是可达性分析。finalize的作用:假设一个本子已经被老妈认定为垃圾了,但老妈在扔掉垃圾的时候必须先经过一个程序,即finalize,假如在这个程序过程中,我突然想起这个本子对我还是有用的,那么这个本子就不会被认定为垃圾,从而继续保留在内存中。
六、我要怎样忘了你是谁——垃圾回收算法;知道什么是垃圾,找到了垃圾的位置,接下来的问题是我要怎么处理这个垃圾,即垃圾回收。我要怎样忘了你是谁,关键是要怎么字,这个动作是怎么发生的。标记清除:在这个楼层中,垃圾四处都有,甚至散乱在非垃圾之间或者周围,即然我老妈已经给有用的东西做个标志,那么这就意味着我老妈只需要清除那些没有标识的东西。标记清除的做法形象成就是我老妈拿着垃圾桶,从头到尾,看到垃圾就把他扔到垃圾桶里面。这种做法无疑是最简单的,但是带来的后果也是很明显的,空间碎片太多。这里的空间碎片又要做如何理解,每个物品(每个对象)都是需要占据着一定的的面积(即内存),他要站住脚跟嘛,但是如果空间碎片的太多,就会导致大的物品来临的时候,区域(内存)不够用,就会再次引发垃圾回收(意味着你打游戏的时候可能要停顿个几秒)。再举个现实中的例子,打包行李箱的时候,随随便便,散乱的放置东西,行李厢很容易被撑满,这个时候你还想放一双鞋进去,你会发现空间不够用,只能把所以东西都倒出来,整整齐齐的,从上到下从左到右的放置物品。对于空间的利用率,整齐的做法比散乱无章的行为更来得高,这就引出了另外一个做法,标记整理算法。标记整理:你见过有谁扫地的时候,看到垃圾就直接把扫到扫帚了里面,看到就扫。不存在的!人是有惰性的,所有总会找到更高效的做法,更习惯的做法是将垃圾扫到一起,再统一将其扔到垃圾桶中。复制:这个算法就有点奢侈了,不管这个内存里有多少垃圾,我老妈都统一将他们扔掉,然后重新再买一次那些我们还需要用的物品,俗称复制。因此,如果存活对象太多,这个算法是不适合的(想想就知道了-.-),其二,JVM里面需要将可用内存分为两半,一半供目前使用,一半供复制后的对象使用。

深入理解jvm原理之逃逸分析

最近一直在学习Java虚拟机原理,觉得有意思的地方就写个文章记录下来。优胜劣汰是自然界的发展,适用到Java虚拟机也不为过,jvm过了生存下去,一直在自我进化,Java虚拟机也在不停的进化和优化,有的是基于执行代码的优化,例如指令重排序等等;有的是基于分析技术,例如关系分析或者逃逸分析等等,今天就重点介绍一下jvm中的分析技术优化---逃逸分析;内容大部分源自于《深入理解Java虚拟机》;

逃逸分析一般分为两种:一种基本行为就是分析对象的动态作用域,当一个对象在方法中定义后,它可能被外部的方法所引用,例如作为调用参数传入了其他对象中,称为方法逃逸;甚至被外部线程所引用,例如赋值给变量或可以在其他线程中访问的变量,这种优化行为称为线程逃逸;

概念归概念,最终效果怎么样,肯定还需要是骡子是马拉出来遛遛,总牛的理论需要落地检验,说程序员的话,也就是一个对象不会逃逸到方法或者线程之外后,这个变量会进行一些高效的优化;实现方式一般有下面几种;

栈上分配:无论是C#还是Java的程序员,大家都知道,对象会创建在Java堆上,而Java堆中的对象对线程(Java线程)是共享和可见的,而虚拟机的垃圾回收就是回收对象不再适用的对象,无论哪种垃圾回收器,都需要需要筛选和整理可回收的对象,回收和整理要耗费很长时间,如果确定一个方法不会逃逸出方法之外,那就让这个对象直接分配在栈上,而对象所占用的空间也会随着帧栈的出栈而销毁,垃圾回收系统的压力会就变的小了;

消除同步:线程同步本身就是一个相对耗时的过程(至于为什么耗时,可以查询用户线程和内核线程相关知识),如果确认一个对象不会被其他线程访问;那么变量的读写就不会和其他线程竞争,对于这种变量实施的同步可以消除;

标量替换:标量又称scalar是指一个数据已经无法再分解成更小的数据来表示了,Java虚拟机中的原始数据例如int,long,等值类型以及reference类型,都不能再进一步分解,他们就可以称为标量,相对的,它们如果可以继续分解,那就是称为聚合量又称Aggregate,Java对象就是典型的聚合量,如果把一个对象拆散,根据程序访问情况,将其使用到的成员变量类型变成基本类型代替,如果jvm逃逸分析中发现这个对象不会外部对象使用,那程序执行的就不会创建该对象,为改为创建它的若干个被这个方法使用的成员变量来代替(栈上创建的数据,又很大的概率会被jvm分配至物理机的高速寄存器中存储),这个也为后续进一步的优化创造了条件;

逃逸分析很多优势还在陆陆续续发现,Java8已经默认开启了逃逸分析, -XX:+DoEscapeAnalysis 开启或者关闭这个选项;都是干活,后续上带么和截图来验证一下;

文章分享结束,深入理解jvm第四版pdf和深入理解JVM之ClassLoader的答案你都知道了吗?欢迎再次光临本站哦!

深入理解jvm第四版pdf(深入理解JVM之ClassLoader)

本文编辑:admin

更多文章:


oracle vm virtualbox导入虚拟电脑(Oracle VM VirtualBox导入虚拟电脑D:\XubunTOS.ova失败)

oracle vm virtualbox导入虚拟电脑(Oracle VM VirtualBox导入虚拟电脑D:\XubunTOS.ova失败)

大家好,oracle vm virtualbox导入虚拟电脑相信很多的网友都不是很明白,包括Oracle VM VirtualBox导入虚拟电脑D:\XubunTOS.ova失败也是一样,不过没有关系,接下来就来为大家分享关于oracle

2025年7月11日 13:45

html注册界面表单验证代码(html,js表单的验证,下面代码是想实现当输入6个字符以上用户名通过,少于时报错,但执行不了,求改错)

html注册界面表单验证代码(html,js表单的验证,下面代码是想实现当输入6个字符以上用户名通过,少于时报错,但执行不了,求改错)

大家好,今天小编来为大家解答以下的问题,关于html注册界面表单验证代码,html,js表单的验证,下面代码是想实现当输入6个字符以上用户名通过,少于时报错,但执行不了,求改错这个很多人还不知道,现在让我们一起来看看吧!本文目录html,j

2025年6月23日 16:15

什么是小学生编程?有用吗?(小学学编程有用吗)

什么是小学生编程?有用吗?(小学学编程有用吗)

“什么是小学生编程?有用吗?”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看什么是小学生编程?有用吗?(小学学编程有用吗)!本文目录小学学编程有用吗小学生学编程到底有没有用编程课是计算机课程么儿童编程课对孩子有什么作用小学生

2026年5月27日 21:00

kali linux基础(变身滚动发行版,Kali Linux 2.0特性知多少)

kali linux基础(变身滚动发行版,Kali Linux 2.0特性知多少)

各位老铁们,大家好,今天由我来为大家分享kali linux基础,以及变身滚动发行版,Kali Linux 2.0特性知多少的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,

2026年9月9日 23:45

access如何用查询值给一维数组赋值(如何用vb读取access表中数据,并赋值给另一变量然后进行计算判断 急!)

access如何用查询值给一维数组赋值(如何用vb读取access表中数据,并赋值给另一变量然后进行计算判断 急!)

大家好,关于access如何用查询值给一维数组赋值很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于如何用vb读取access表中数据,并赋值给另一变量然后进行计算判断 急!的知识点,相信应该可以解决大家的一些困惑和问题,如果

2025年9月7日 11:00

uniapp onload(uni-app踩坑笔记)

uniapp onload(uni-app踩坑笔记)

各位老铁们好,相信很多人对uniapp onload都不是特别的了解,因此呢,今天就来为大家分享下关于uniapp onload以及uni-app踩坑笔记的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录uni-a

2026年7月12日 08:00

subway是什么意思(subway中文是什么意思)

subway是什么意思(subway中文是什么意思)

本篇文章给大家谈谈subway是什么意思,以及subway中文是什么意思对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录subway中文是什么意思subway的翻译subway什么意思subway怎么读subway是什么意思中

2026年4月3日 16:45

tp5666路由器(Tplink6500无线路由器怎么设置上网最流畅)

tp5666路由器(Tplink6500无线路由器怎么设置上网最流畅)

大家好,如果您还对tp5666路由器不太了解,没有关系,今天就由本站为大家分享tp5666路由器的知识,包括Tplink6500无线路由器怎么设置上网最流畅的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录Tplin

2025年11月18日 15:45

normal tanks第7关密码(请问normal tanks第五关以后的密码是多少诚挚谢谢!!)

normal tanks第7关密码(请问normal tanks第五关以后的密码是多少诚挚谢谢!!)

本篇文章给大家谈谈normal tanks第7关密码,以及请问normal tanks第五关以后的密码是多少诚挚谢谢!!对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,

2026年9月9日 02:00

编写webservice通讯接口(webservice接口怎么写)

编写webservice通讯接口(webservice接口怎么写)

大家好,关于编写webservice通讯接口很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于webservice接口怎么写的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位

2025年6月7日 15:45

c语言实现数据库功能(c语言操作数据库)

c语言实现数据库功能(c语言操作数据库)

大家好,关于c语言实现数据库功能很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于c语言操作数据库的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目录c语言操

2026年6月3日 23:15

尿常规中conduct是啥意思(尿常规报告单.请大家帮忙解读分析一下.)

尿常规中conduct是啥意思(尿常规报告单.请大家帮忙解读分析一下.)

本篇文章给大家谈谈尿常规中conduct是啥意思,以及尿常规报告单.请大家帮忙解读分析一下.对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录尿常规报告单.请大家帮忙解读分析一下.尿液检查:隐血(bld)10(十/一),酮体定性

2026年3月31日 19:30

vscode创建web项目(Vscode新建项目方法分享)

vscode创建web项目(Vscode新建项目方法分享)

各位老铁们好,相信很多人对vscode创建web项目都不是特别的了解,因此呢,今天就来为大家分享下关于vscode创建web项目以及Vscode新建项目方法分享的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录Vs

2025年11月16日 10:30

springer免费电子版(电子书数据库有哪些)

springer免费电子版(电子书数据库有哪些)

这篇文章给大家聊聊关于springer免费电子版,以及电子书数据库有哪些对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录电子书数据库有哪些Springer电子期刊有哪几种文件格式APDF格式BJP电子书数据库有哪些1、Spri

2025年8月2日 04:45

简述php脚本程序工作流程(PHP脚本程序主要是由哪几部分组成)

简述php脚本程序工作流程(PHP脚本程序主要是由哪几部分组成)

各位老铁们,大家好,今天由我来为大家分享简述php脚本程序工作流程,以及PHP脚本程序主要是由哪几部分组成的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本

2026年3月4日 15:15

java字符串截取后两位(JAVA截取所有指定字符后面的字符串)

java字符串截取后两位(JAVA截取所有指定字符后面的字符串)

大家好,关于java字符串截取后两位很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于JAVA截取所有指定字符后面的字符串的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有

2025年12月5日 23:15

告别php源码(apache 解析一个错误的php文件时,会直接显示php的源码,如何让他不显示源码)

告别php源码(apache 解析一个错误的php文件时,会直接显示php的源码,如何让他不显示源码)

本篇文章给大家谈谈告别php源码,以及apache 解析一个错误的php文件时,会直接显示php的源码,如何让他不显示源码对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题

2026年1月28日 18:00

当前时间的毫秒数(vb中返回当前系统毫秒数的函数是)

当前时间的毫秒数(vb中返回当前系统毫秒数的函数是)

“当前时间的毫秒数”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看当前时间的毫秒数(vb中返回当前系统毫秒数的函数是)!本文目录vb中返回当前系统毫秒数的函数是C#中有没有获取当前时间毫秒时的函数datetype是如何获取年

2026年7月30日 03:00

game是什么意思英语?机械键盘game是什么意思

game是什么意思英语?机械键盘game是什么意思

这篇文章给大家聊聊关于game,以及game是什么意思英语对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录game是什么意思英语机械键盘game是什么意思servicegame@163.com邮箱我安装了并登录了steam,为

2025年8月14日 00:45

shorts什么意思(shorts怎么读)

shorts什么意思(shorts怎么读)

“shorts什么意思”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看shorts什么意思(shorts怎么读)!本文目录shorts怎么读shorts是什么意思英语shorts什么意思Shorts的中文意思shorts怎么

2026年3月27日 19:00

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索