git文件管理与索引,深入理解工作原理,java面试手册升级版

这篇具有很好参考价值的文章主要介绍了git文件管理与索引,深入理解工作原理,java面试手册升级版。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

git add 命令的意义是将暂存一个文件。以Git文件分类而言,如果一个文件是未追踪的,那么git add会将文件的状态转化为已追踪状态。如果git add作用一个目录,那么该目录下的所有文件都会被递归为已追踪状态暂存起来。接着之前的例子,继续进行讲解。

$ git status

On branch master

No commits yet

Untracked files:

(use “git add …” to include in what will be committed)

.gitignore

sky

nothing added to commit but untracked files present (use “git add” to track)

#将sky和.gitignore文件暂存,查看状态对比

$ git add sky .gitignore

$ git status

On branch master

No commits yet

Changes to be committed:

(use “git rm --cached …” to unstage)

new file: .gitignore

new file: sky

第一条git status目录显示有两个未追踪的文件,并友好的提醒你要追踪一个文件,只需要使用git add <file>...命令即可。使用git add命令之后,暂存和追踪sky以及.gitignore文件,并准备在下次提交的时候添加到版本裤中。

在Git的对象模型方面,发出git add命令时对每个文件的全部内容都将被复制到对象库中,并且按文件的SHA1名来索引。暂存一个文件也称作为缓存(cacheing)一个文件,或者是称为将文件放入索引,其实上面已经看到了提示--cached。可以使用git ls-files命令查看隐藏在对象模型下的文件,并且可以找到那些暂存文件的SHA1值。

$ git ls-files --stage

100644 85c292ca0717bb097b55af3b961c493190d1a4aa 0 .gitignore

100644 116c7ee1423b9a469b3b0e122952cdedc3ed28fc 0 sky

在版本库中大多数的日常变化可能只是简单的编辑。但在任何编辑后,提交变更之前,请执行git add命令,用最新的版本文件去更新索引。如果不这么去做,你将会得到两个不同版本的文件:一个在对象库中是被索引引用的,另一个则在你的工作目录下。继续之前的示例,改变sky文件,使之有别与索引中的那个文件,然后使用来自神秘的东方的韩天尊的无敌逃跑技能。开个玩笑,其实是命令git hash-object file(你几乎不会直接调用她)来直接和输出的这个新版本的SHA1散列值。

$ git ls-files --stage

100644 85c292ca0717bb097b55af3b961c493190d1a4aa 0 .gitignore

100644 116c7ee1423b9a469b3b0e122952cdedc3ed28fc 0 sky

#通过vim修改,新增了add new some data now

$ cat sky

new data

add new some data now

#使用命令计算SHA1散列值

$ git hash-object sky

e24bcd708d232113f9012a5ece0a64eb97f3921e

在略做修改之后,你会发现保存在对象库和索引中的那个文件的上一个版本的SHA1值是116c7ee1423b9a469b3b0e122952cdedc3ed28fc。然而在更新sky文件后,版本的SHA1值则变成了e24bcd708d232113f9012a5ece0a64eb97f3921e。接下来更新索引,使之包含文件的最新版本。

$ git add sky

$ git ls-files --stage

100644 85c292ca0717bb097b55af3b961c493190d1a4aa 0 .gitignore

100644 e24bcd708d232113f9012a5ece0a64eb97f3921e 0 sky

现在索引有了更新后的文件版本。简单来概括:文件已经暂存了,或者是sky文件在索引中。在文件索引中这种说法并不是很确切,因为实际上文件存在对象库中,索引只是指向她而已。看似无用的处理SHA1散列值和索引,却带来一个关键点:与其将git add看成是添加这个文件,不如看作是添加这个内容

在任何情况下,最重要的是要记住工作目录下的文件版本和索引中暂存的文件版本可能是不同步的。当提交的时候,git会使用索引中的文件版本

三、git rm命令


回顾简单用法,例如删除test.md文件(前提是已暂存了)

#删除test.md文件

git rm test.md

1、git rm命令的用法

git rm命令自然是与git add相反的命令。她会在版本库和工作目录中同时删除文件。然而,由于删除文件比添加文件问题更多(假如出现错误),git对移除文件更多一些关注。

Git可以从索引或者同时从索引和工作目录中删除一个文件。Git不会只从工作目录中删除一个文件,普通的rm命令可用于这一目的。

从工作目录和索引中同时删除一个文件,并不会删除该文件在版本库中的历史记录。文件的任何版本,只要是提交到版本库中的历史记录中的一部分,就会留在对象库里并保存历史记录。继续上述的例子,引入一个不应该暂存的意外文件,看如何将其删除。

#新增了一个意外文件rdms

$ echo “random file data” > rdms

#提示:无法对Git认为是other的文件执行git rm

#应该只是用rm rdms

$ git rm rdms

fatal: pathspec ‘rdms’ did not match any files

因为git rm也是一条对索引进行操作的命令,所以对没有添加到版本库中或索引中的文件是不起作用的。Git必须先认识到文件才行,所以下面偶然的暂存rdms文件

#意外暂存rdms文件

$ git add rdms

$ git status

On branch master

No commits yet

Changes to be committed:

(use “git rm --cached …” to unstage)

new file: .gitignore

new file: rdms

new file: sky

如果要将一个文件由已暂存的转化为未暂存的,可以使用git rm --cached命令。

#查看SHA1散列值

$ git ls-files --stage

100644 85c292ca0717bb097b55af3b961c493190d1a4aa 0 .gitignore

100644 087d758bdee282174e3ba5905a5e463d3d7a88dc 0 rdms

100644 e24bcd708d232113f9012a5ece0a64eb97f3921e 0 sky

#删除

$ git rm --cached rdms

rm ‘rdms’

#此时对比删除前的内容,发现rdms文件已经不存在了

$ git ls-files --stage

100644 85c292ca0717bb097b55af3b961c493190d1a4aa 0 .gitignore

100644 e24bcd708d232113f9012a5ece0a64eb97f3921e 0 sky

#可以看出,加上–cached参数并不会删除工作目录中的文件

$ ls

rdms sky test.o

git rm --cached会删除索引中的文件并将其保留在工作目录中,而git rm则会将文件从索引和工作目录中同时删除。所以,我额外的加了注意事项在文末,并予以说明。

如果想要移除一个已经提交的文件,通过简单的git rm filename命令来暂存这一请求。

#对暂存的文件进行提交

$ git commit -m “add some files”

[master (root-commit) 82e23d4] add some files

2 files changed, 3 insertions(+)

create mode 100644 .gitignore

create mode 100644 sky

#将之前暂存的文件sky移除暂存

$ git rm sky

rm ‘sky’

#查看状态

$ git status

On branch master

Changes to be committed:

(use “git restore --staged …” to unstage)

deleted: sky

Untracked files:

(use “git add …” to include in what will be committed)

rdms

Git在删除一个文件之前,她会先进行检查以确保工作目录下该文件的版本与当前分支中的最新版本(Git命令调用HEAD的版本)是匹配的。这个验证会防止文件的修改(由于你的编辑)意外丢失。

tips:还可以使用git rm -f来强制删除文件。强制就是明确授权,给你权限放心大胆的删除。即使从上次提交以来你已经修改了该文件,还是会删除她。

万一真的想不留那个不小心删除的文件,只要在把她添加回来即可。

$ git add sky

$ git checkout HEAD–sky

#或者提交后采取如下命令找到对应的散列值,进行恢复,rev-list命令很实用,请拿起小本本记住她

$ git rev-list master

82e23d40959116ae55ca82ced231e0069d8fc229

$ git checkout 82e23d40959116ae55ca82ced231e0069d8fc229

Warning: you are leaving 1 commit behind, not connected to

any of your branches:

40eac09 delete some files

If you want to keep it by creating a new branch, this may be a good time

to do so with:

git branch 40eac09

HEAD is now at 82e23d4 add some files

注意rev-list命令很实用,请拿起小本本记住她

此处只是顺带的提一下。当我们删除了一个文件,此时想回退到历史版本,可以使用git checkout 接上master分支的ID(SHA1)。如何找到ID值呢?这里仅仅是简单的介绍了一下git rev-list的用法,相信你会爱上她的。当然还可以加上参数–before,接指定的日期去查询分支。

#查询我的历史版本查看到散列值

$ git rev-list master

988df9ddbeb6b30d0bf5138f36219a8593df75e0

bd156ab27fc96e78e5515c39c05d4ecd6c36b9f0

#检出历史版本,根散列值恢复到上一个版本

$ git checkout bd156ab27fc96e78e5515c39c05d4ecd6c36b9f0

版本系统擅长恢复文件的旧的版本。关于git rm命令就演示这么多。

四、git mv命令


1、简单描述使用

例如,使用git mv命令将test.md文件重命名为Readme.md,如下命令所示。

#重命名一个文件

git mv test.md Readme.md

git mv命令的另一作用是移动文件位置,熟悉Linux命令的小伙伴肯定不会陌生。将test.md文件由github目录移动到gitee目录。

#移动一个文件的位置

git mv /github/test.md /gitee/

2、git mv详细用法介绍

假设你需要移动或者重命名文件。可以对旧的文件使用git rm命令,然后使用git add命令添加新文件,或者直接使用git mv命令。给定一个版本库,其中有一个test文件,你想要将重命名为newtest。下面一系列的命令就是等价的Git操作。

$ mv test newtest

$ git rm test

$ git add newtest

#上面三步操作等价于下面操作

$ git mv test newtest

无论哪种情况,Git都会在索引中删除test的路径名并添加newtest的路径名。至于test的原始内容,则仍然保留在对象库中,然后才会将它与newtest重新关联。看起来有点绕,其实仔细琢磨一下就好了。

在示例版本库中找回test这个文件,如下重命名,然后提交变更。

$ git mv test newtest

$ git add newtest

$ git commit newtest -m “moved test to newtest”

[detached HEAD adc778e] moved test to newtest

1 file changed, 1 insertion(+)

create mode 100644 newtest

如果你碰巧检查这个文件的历史记录,你可能会不安的看到Git很明显丢失了原始的test文件的历史记录,只记得她从test从重命名为当前文件名。

$ git log newtest

commit adc778e58db37977b39a541da4498607f12bc80b (HEAD)

Author: dywangk example@xx.com

Date: Mon Jan 17 20:35:56 2022 +0800

moved test to newtest

其实,Git是记得全部历史记录的,但是显示要限制与在命令中指定的文件名。--follow选项会让Git在日志中回溯并找到内容相关联的整个历史记录。这里就不贴代码记录了,篇幅拉的太长了,可以自行修改测试。

$ git log --follow sky

VCS的经典问题之一就是文件重命名会导致它们丢失对文件历史记录的追踪。而Git即使经过重命名,也仍然能保留历史信息。

五、追踪重命名注解


小白:cangls啊,我以前使用过svn,没有用过Git,她们之间对重命名有啥区别吗?

cangls:当然有了,下面就给你科普一下。内容很长,虽然很乏味,但请耐心看完。

git文件管理与索引,深入理解工作原理,java面试手册升级版,2024年程序员学习,git,java,elasticsearch

1、追踪重命名注解介绍

下面作为传统版本控制系统的典型,SVN对文件重命名和移动做了很多追踪工作。为什么呢?这是由于它只追踪文件之间的差异才导致的。例如,如果移动一个文件这本质上就相当于从旧文件中删除所有行,然后将它添加到新文件中。但是任何时候,你哪怕就做一个简单的重命名,也需要再次传输和存储文件的全部内容,这将变得非常低效;想象一下重命名一个拥有数以千计的文件的子目录,那该是多么恐怖的一件事情。

为了缓解这种情况,SVN显示追踪每一次重命名。如果你想将test.txt重命名为subdir/test.txt你必须对文件使用svn mv,而不能使用svn rmsvn add。否则,SVN将不能识别出这是一个重命名,只能像刚才描述的那样进行低效的删除、添加步骤。

接着,要有追踪重命名这个特殊功能,SVN服务器需要一个特殊协议来告诉她的客户端,请将test.txt移动到subdir/test.txt。此外,每一个SVN客户端必须确保该操作(相对罕见)执行的正确性。

另一方面,Git则不追踪重命名。可以将text.txt移动到或者复制到任何地方,这么做只会影响树对象而已(请记住树对象保存内容间的关系,而内容本身保存在blob中)。查看两颗树间的差异,我们很容易发现叫 a30af53…的blob已经移到另一个新地方。即使你没有明确检查差异,系统中的每个部分都知道她已经有了那么一个blob,不再需要她的另一个副本了。

在这种情况下,像在很多其它地方一样,Git基于散列的简单存储系统简化了许多其它RCS被难倒的或者选择回避的事情。

六、.gitignore文件


在本文介绍暂存文件的时候,就已经简单的使用过gitignore文件来忽略不相干的test.o文件。在那个例子中,可以忽略任何文件,只要将想要忽略的文件名加到同一目录下的.gitignore文件即可。此外可以通过将文件名添加到该版本库顶层目录下的.gitignore文件中忽略她。

但是git还支持一种更为丰富的机制。一个.gitignore文件下可以包含一个文件名模式列表,指定哪些文件要忽略。.gitignore文件格式如下:

  • 空行会被忽略,而已井号(#)开头的行可以用于注释。然而,如果#跟在其它文本后面,它就不表示注释了。

  • 一个简单的字面配置文件名匹配任何目录中的同名文件。

  • 目录名由末尾的反斜线(/)标记。这能匹配同名的目录和子目录,但不匹配文件或符号链接。

  • 包含shell通配符,如星号(*),这种模式可以扩展为shell通配模式。

  • 起始的感叹号(!)会对该行其余部分模式进行取反。此外,被之前模式排除但被取反规则匹配的文件是要包含的。取反模式会覆盖低优先级的规则。

Git允许在版本库中任何目录下有.gitignore文件。每个文件都只影响该目录和其所有子目录。.gitignore的规则也是级联的:可以覆盖高层目录中的规则,只要在其子目录包含一个取反模式(使用起始的“!”)。

为了解决带多个.gitignore目录的层次结构问题,也为了允许命令行对忽略文件列表的增编,Git按照下列由高到底的有限顺序:

  • 在命令行指定的模式;

  • 从相同目录的.gitignore文件中读取的模式;

  • 上层目录中的模式,向上进行。因此,当前目录的模式能推翻上层目录的模式,而最接近当前目录的上层目录的模式优于更上层的目录模式;

  • 来自.git/info/exclude文件的模式;

  • 来自配置变量core.excludefile指定的文件中的模式。

因为在版本库中.gitignore被视为普通文件,所以在复制操作过程中它会被复制,并适用于你的版本库的所有副本一般情况下,只有当模式普遍适用于派生的版本库时,才应该将条目放入版本控制下的.gitignore文件中

当然还有一种特殊情形,有一类文件我需要忽略,但其中部分我需要追踪,此时可以使用取反(!)。

七、Git中对象模型和文件


到现在为止,你应该具备管理文件的基本能力。尽管如此,在哪里跟踪啥文件:在工作目录、索引还是版本库中,还是让人困惑。通过图形进行区分她们之间的区别。初始状态,在工作目录中包含file1和file2两个文件,分别为“foo”和“bar”。

4张图绘制有点粗糙,后续会优化的。

1、示例图1

除了工作目录下的file1和file2之外,master分支还有一个提交,它记录了与file1和file2内容完全一样的“foo”和“bar”的树。另外,该索引记录两个HSA1值 257cc5和5716ca,与那个两个文件分别对应。工作目录、索引及对象库都是同步一致的,没什么是脏的。

git文件管理与索引,深入理解工作原理,java面试手册升级版,2024年程序员学习,git,java,elasticsearch

2、示例图2

图2显示了在工作记录中对file1编辑后的变化,现在它的内容包含“git”。索引和对象库中没有变化,但是工作目录现在是脏的。

git文件管理与索引,深入理解工作原理,java面试手册升级版,2024年程序员学习,git,java,elasticsearch

当使用git add file1来暂存file1的编辑时,一些有趣的变化发生了。如图3所示。

3、示例图3

git首先选取出工作目录中file1的版本,为它的内容计算一个SHA1散列ID(04848c),然后把那个ID保存在对象库中。接下来,Git就会记录在索引中的file1路径名已更新为新的(04848c)SHA1值。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
git文件管理与索引,深入理解工作原理,java面试手册升级版,2024年程序员学习,git,java,elasticsearch
git文件管理与索引,深入理解工作原理,java面试手册升级版,2024年程序员学习,git,java,elasticsearch
git文件管理与索引,深入理解工作原理,java面试手册升级版,2024年程序员学习,git,java,elasticsearch
git文件管理与索引,深入理解工作原理,java面试手册升级版,2024年程序员学习,git,java,elasticsearch
git文件管理与索引,深入理解工作原理,java面试手册升级版,2024年程序员学习,git,java,elasticsearch
git文件管理与索引,深入理解工作原理,java面试手册升级版,2024年程序员学习,git,java,elasticsearch

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
git文件管理与索引,深入理解工作原理,java面试手册升级版,2024年程序员学习,git,java,elasticsearch

写在最后

可能有人会问我为什么愿意去花时间帮助大家实现求职梦想,因为我一直坚信时间是可以复制的。我牺牲了自己的大概十个小时写了这片文章,换来的是成千上万的求职者节约几天甚至几周时间浪费在无用的资源上。

git文件管理与索引,深入理解工作原理,java面试手册升级版,2024年程序员学习,git,java,elasticsearch

git文件管理与索引,深入理解工作原理,java面试手册升级版,2024年程序员学习,git,java,elasticsearch

上面的这些(算法与数据结构)+(Java多线程学习手册)+(计算机网络顶级教程)等学习资源
]
[外链图片转存中…(img-XxwHwpBc-1712075104338)]
[外链图片转存中…(img-JUkOvTnS-1712075104338)]
[外链图片转存中…(img-7nlQ6wBz-1712075104338)]
[外链图片转存中…(img-xyRaR7y3-1712075104338)]
[外链图片转存中…(img-GHFHIQZv-1712075104339)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-ctDE59VK-1712075104339)]

写在最后

可能有人会问我为什么愿意去花时间帮助大家实现求职梦想,因为我一直坚信时间是可以复制的。我牺牲了自己的大概十个小时写了这片文章,换来的是成千上万的求职者节约几天甚至几周时间浪费在无用的资源上。

[外链图片转存中…(img-T60VNByg-1712075104339)]

[外链图片转存中…(img-OMU8eX4K-1712075104340)]

上面的这些(算法与数据结构)+(Java多线程学习手册)+(计算机网络顶级教程)等学习资源文章来源地址https://www.toymoban.com/news/detail-848690.html

到了这里,关于git文件管理与索引,深入理解工作原理,java面试手册升级版的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • “深入剖析JVM内部机制:理解Java虚拟机的工作原理“

    标题:深入剖析JVM内部机制:理解Java虚拟机的工作原理 介绍: Java虚拟机(JVM)是Java语言的核心组件,负责将Java源代码转换为可以在计算机上运行的机器码。了解JVM的内部机制对于开发人员来说非常重要,因为它可以帮助我们更好地理解Java程序的运行行为和性能优化。本文

    2024年02月12日
    浏览(45)
  • “深入探究JVM内部机制:理解Java虚拟机的工作原理“

    标题:深入探究JVM内部机制:理解Java虚拟机的工作原理 摘要:本文将深入分析Java虚拟机(JVM)的工作原理,包括类加载、内存管理、垃圾回收和即时编译等方面。通过详细解释这些概念,并给出示例代码,帮助读者更好地理解JVM内部的工作机制。 正文: 一、类加载 类加载

    2024年02月12日
    浏览(48)
  • “深入解析JVM内部机制:理解Java虚拟机的工作原理“

    标题:深入解析JVM内部机制:理解Java虚拟机的工作原理 摘要:本文将深入探讨Java虚拟机(JVM)的内部机制,解释其工作原理。我们将讨论JVM的组成部分、类加载过程、运行时数据区域以及垃圾回收机制。此外,还将通过示例代码来说明JVM的内部工作机制。 正文: JVM的组成

    2024年02月13日
    浏览(48)
  • “深入解析JVM:理解Java虚拟机的工作原理和优化技巧“

    标题:深入解析JVM:理解Java虚拟机的工作原理和优化技巧 摘要:Java虚拟机(JVM)是Java语言的核心组成部分,它负责将Java字节码转换为可执行的机器码,并提供垃圾回收、内存管理、线程调度等功能。本文将深入解析JVM的工作原理,包括类加载、运行时数据区域、垃圾回收

    2024年02月11日
    浏览(50)
  • 【ES】Elasticsearch-深入理解索引原理

    索引(Index) ES将数据存储于一个或多个索引中,索引是具有类似特性的文档的集合。类比传统的关系型数据库领域来说,索引相当于SQL中的一个数据库,或者一个数据存储方案(schema)。索引由其名称(必须为全小写字符)进行标识,并通过引用此名称完成文档的创建、搜索、更新

    2024年02月04日
    浏览(46)
  • 深入理解索引B+树的基本原理

    目录 1. 引言 2. 为什么要使用索引? 3. 索引的概述 4. 索引的优点是什么? 4.1 降低数据库的IO成本,提高数据查找效率 4.2 保证数据库每一行数据的唯一性 4.3 加速表与表之间的连接 4.4 减少查询中分组与排序的执行时间  5. 索引的缺点是什么? 5.1 创建索引和维护索引非常耗费

    2024年02月12日
    浏览(44)
  • 深入理解区块链的工作原理

    作者:禅与计算机程序设计艺术 区块链是一个由分布式数据库组成的共享系统,它的独特之处在于它能够记录下所有历史上的数据,并通过一个公共的、不可篡改的 ledger(账本) 来记录所有交易记录和数据变更。通过这种方式,所有的用户都可以验证、验证交易记录和数据,

    2024年02月08日
    浏览(42)
  • 深入理解 PostgreSQL 的架构和内部工作原理

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月16日
    浏览(36)
  • 【MySQL】深入理解MySQL索引优化器原理(MySQL专栏启动)

    📫作者简介: 小明java问道之路,专注于研究 Java/ Liunx内核/ C++及汇编/计算机底层原理/源码,就职于大型金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。   📫 热衷分享,喜欢原创~ 关注我会给你带来一些不一样

    2024年01月15日
    浏览(58)
  • 深入理解JAVA垃圾收集器CMS,G1工作流程原理 GC流程图 什么社会触发Minor GC?触发MinorGC过程。Full GC 过程。

    JVM内存空间基础知识点(基于JDk1.8) 1.方法区:逻辑概念,元空间,方法区主要用于存储类的信息、常量池、方法数据、方法代码等。方法区逻辑上属于堆的一部分,但是为了与堆进行区分,通常又叫“非堆”。 2.程序计数器:程序计数器可以看作当前线程所执行的字节码的

    2024年04月25日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包