Mr.zhang's Blog

学习笔记,技术博客


  • 首页

  • 归档

  • 分类

  • 标签

  • 关于

  • 搜索

JVM垃圾回收机制

发表于 2018-06-02 | 分类于 technology

垃圾回收机制

堆分为 新生代(Young) 与 老年代(Old)

  • Young区 分为Eden区和两个Survivor区

    ​ 新创建的对象都在Eden区,当Eden区满后会触发Minor GC,把Eden区回收后仍然存活的对象复制到其中一个空的Survivor区; 同时,另一个Survivor区中存活的对象也复制到这个Survivor中,保证总有一个Survivor区是空的

  • Old区

    ​ Young的Eden区满后会触发Minor GC,把Eden区回收后仍存活的对象放到Survivor区中,如果此时Survivor区仍然存不下这些存活的对象,GC收集器会把这些对象直接存放到Old区;如果在Survivor区中的对象足够老,也直接放到Old区.如果Old区也满了,则触发Full GC,回收整个堆内存

  • Perm区

​ 存放的主要是类的Class对象, 垃圾回收也是由Full GC触发

垃圾回收算法

  • 标记-清除算法

    ​ 对于每个存活的对象,进行标记.标记完成,开始进行清理(未标记)不再存活的对象

    ​ 缺点:产生过多碎片,导致内存不连续,分配大对象时,无法找到足够的内存触发gc,效率不是太高

  • 复制算法

    ​ 用于生存率较低的场景

    把内存分为若干个区域,每次只使用其中一部分,对于存货的对象,copy到另一个区域,对于剩余的对象进行垃圾回收
    

    ​ 缺点:造成内存浪费

    ​ 优点: 无碎片

  • 标记-整理算法

    ​ 类似于标记清理,后续不是直接对对象进行清理,而是进行移动存活对象,边界外进行清除

JVM采用分代的垃圾回收算法

  • 新生代 死的快,存活率低 采用 复制算法 Minor GC
  • 老年代 存活长 采用标记清理 Full GC
# JVM
vi编辑器
JVM类加载机制

vi编辑器

发表于 2018-05-26 | 分类于 technology

1、vi 文件名

2、输入 i 进入编辑模式

3、对文件进行编辑

4、Esc 退出编辑模式,进入命令模式

5、:wq 保存退出

​ :q! 退出但不保存

  • 配置 vimrc

    当我最初使用 vim 的时候,我浪费了好多时间来缩进代码,我不知道通过修改 Vim 的 .vimrc 配置文件来实现代码缩进、语法高亮、显示行号等功能。

    在你的 Home 目录下创建一个 .vimrc 文件,添加下面的代码来设置行号、代码缩进等

    set number # 显示行号

    set autoindent # 自动缩进

    set nowrap # 不换行

  • 不关闭终端退出编辑器

    使用 Vim 编辑器保存并退出编辑状态是一件轻而易举的事,你只需记住按 ESC 键切换到正常模式,然后输入冒号(:),之后输入 wq 即可实现保存并退出。

    :wq

    如果不想保存,则按 ESC 键切换到正常模式,然后输入冒号(:),之后输入 q! 即可。

    :q!

  • 删除一行或多行

    通过退格键(Backspace)来删除一行代码显然是太麻烦了。可以通过切换到正常模式(编辑模式下按 ESC 键)来进行操作

    dd : (输入两次 d,下同)删除当前行;5dd :删除当前行开始的5行;

    dG :(先输入d,然后按 shift 键输入 g)删除当前行至最后一行的所以行。

  • 复制粘贴一块代码

    你可能经常需要复制一行或一大块代码,使用 Vim 快捷键来实现此功能是非常简单的

    按 Esc 切换到正常模式;

    把光标移到你需要复制的代码行首;

    按 V 选择整行,可移动光标选择多行;

    按 d 剪切或按 y 复制选择的代码;

    移动光标到你需要粘贴的位置,按 p 粘贴代码到光标后的位置,或按 P 粘贴到光标前。

  • 撤销与重做

    在使用 Vim 或其他编辑器的时候,你可能经常需要对某些修改进行撤销或重做。在 Vim 中,你可以切换到正常模式,按 u 来撤销操作,按 Ctrl+r 来重做

  • 搜索

    搜索在很多时候都是一个非常重要的功能。在文件中搜索一个特定的词,可以切换到正常模式,然后输入斜线( / ),之后跟上要搜索的词,回车即可

    /word-to-be-searched

    按 n 显示下一个搜索结果,按 N 显示上一个搜索结果

  • 把外部文件读入 Vim

    我开始使用 Vim 的时候,经常会打开一个文件、复制内容、关闭文件、打开另一个文件、然后粘贴进去复制到内容。其实 Vim 中读取另一个文件的内容非常方便。切换到正常模式,然后按 :read。使用此快捷键你不需要手动打开文件来复制内容

    :read readme.md

  • 把命令的结果读入 Vim

    有时候你需要把某个命令的结果复制到 Vim 中,这在 Vim 也非常简单。切换到正常模式,然后输入 :read !command 即可把 command 的结果输入到 vim 中

    :read !ls -l

  • 切换到上次修改的位置

    想知道你在文件中做的最后一次修改是在什么位置?切换到正常模式,输入 g; 来即可切换到上次修改的位置

  • 移动到文件顶部或底部

    当需要移动到文件顶部或底部时,通过 j 或 k 来一行行的移动显得有点麻烦。Vim 提供了一个快捷键可直接实现此功能。切换到正常模式,输入 gg 返回文件顶部,输入 G 返回文件底部

# Linux
Hello World
JVM垃圾回收机制

Hello World

发表于 2018-03-26 | 分类于 hello

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

# Hello
vi编辑器
123
Mr.zhang

Mr.zhang

那天遇见,便是缘分

23 日志
3 分类
7 标签
E-Mail
© 2020 Mr.zhang
Today is another Good Day
鲁ICP备19015290号