Gallon's Note


  • 首页

  • 标签

  • 分类

  • 归档

  • 搜索

JVM字节码执行引擎

发表于 2019-09-25 | 分类于 JVM

方法调用

方法调用就是确定调用哪一个方法。

在编译阶段,即将java文件转化为class文件,class文件中存储的是方法的符号引用(类似于一个代号吧),而不是直接引用(内存地址),因为类还没有加载到内存嘛,所以具体的内存地址肯定是不知道的。

因此,需要到类加载期间,甚至是运行期间才可能确定目标方法的直接引用。

阅读全文 »

JVM垃圾收集机制

发表于 2019-09-21 | 分类于 JVM

GC需要完成三件事:

  • 哪些对象需要回收?
  • 何时进行回收?
  • 怎么样回收?
阅读全文 »

JVM类加载机制

发表于 2019-09-20 | 分类于 JVM

Java程序运行时,有两个阶段,编译和运行。编译阶段将Java文件编译成class字节码文件,然后在运行阶段将class文件加载到内存,并对class文件解释执行。

阅读全文 »

Java内存管理

发表于 2019-09-20 | 分类于 JVM

运行时数据区域包括程序计数器,java虚拟机栈,本地方法栈,方法区和堆。其中,java虚拟机栈,本地方法栈,程序计数器是每个线程私有的。

字节码文件经过类加载子系统从静态存储结构转化为方法区的运行时内存结构。运行时数据区域包括程序计数器,java虚拟机栈,本地方法栈,方法区和堆。其中,java虚拟机栈,本地方法栈,程序计数器是每个线程私有的,方法区以及堆是所有线程共享的。

阅读全文 »

面向对象概述

发表于 2019-09-19 | 分类于 java

面向对象有三大特性:

  • 封装。只对外提供接口由外界访问。
  • 继承。
  • 多态。多态的三个条件:继承,重写,以及向上转型(父类引用指向子类对象)。
阅读全文 »

java 基础

发表于 2019-09-18 | 分类于 java

包装类型

装箱

1
2
// 装箱 调用了 Integer.valueOf(2),将int变成了一个Integer对象
Integer x = 2;

装箱转换是指将一个值类型隐式地转换成一个object 类型,也就是创建一个object 实例并将这个值复制给这个object。

title

阅读全文 »

DirectIO和PageCache

发表于 2019-09-11 | 分类于 IO

PageCache

PageCache一页有4KB左右。

当需要写入磁盘的时候,若每写入一个字节数据就调用IO,这样效率就太低了,所以在操作系统的底层会有一个缓冲区,叫做PageCache,当PageCache中存满了,再写入磁盘,这样大大减少了磁盘IO的次数。

title

上图是写入磁盘的过程,我们使用MMap或者是FileChannel都会经过PageCache层。例如,我们使用FileChannel的时候,先写进DirectByteBuffer中,当buffer中数据满的时候,先写入PageCache,再写入磁盘(操作系统完成)。

阅读全文 »

零拷贝的问题

发表于 2019-09-11 | 分类于 IO
  • 零拷贝机制可以减少数据在内核缓冲区和用户进程缓冲区之间反复的 I/O 拷贝操作。
  • 零拷贝机制可以减少用户进程地址空间和内核地址空间之间因为上下文切换而带来的 CPU 开销。

传统的IO的操作

读操作

缓冲技术是IO的基础,一次读取大量数据放在缓冲区,需要的时候从缓冲区取得数据。

阅读全文 »

java nio操作实践

发表于 2019-07-26 | 分类于 IO

java文件中文件IO主要包括普通IO,FileChannel以及MMap。本文主要介绍FileChannel以及MMap的一些原理以及使用,理解他们最好需要了解有关pageCache,内存零拷贝,堆外缓存的一些知识。

有关pageCache可见 PageCache和DirectIO , 有关零拷贝可见 零拷贝问题 。

阅读全文 »
1…45
SKJin

SKJin

49 日志
12 分类
16 标签
RSS
GitHub E-Mail
© 2020 SKJin
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4