day01 | JVM和极客MySQL

53 阅读2分钟

JVM

今天学习了黑马的一些 JVM 知识,是它的几个内存结构。学习过后,大致了解了这些内存结构,以及它们的一些特点。

  • 首先是程序计数器,这个的作用是用来记录下一条程序执行的地址,它是线程安全的,每个线程中都会有这么一个程序计数器。

  • 虚拟机栈,这个是每个线程运行所需要的内存空间,然后它里面还涉及一些其他的概念,比如说:① 栈帧,这个是用来表示每个方法运行所需要的内存 ② 活动栈帧,表示线程中正在执行的那个方法。
    对于虚拟机栈来说,gc不需要对进行垃圾回收。因为方法执行完,会自动出栈,也就是栈帧会出栈。
    但是会存在栈内存溢出的问题,这个情况就发生在方法递归调用,或者是在转换成 json 时候会出现。

上面所说的都是线程安全的(对于栈帧来说,要考虑方法中是否传入引用类型参数,或者方法返回值为引用类型;如果是的话,那它也是线程不安全的),而下面所讲都是要考虑线程安全性问题。

  • 堆内存,凡是被 new 出来的对象都会放在堆内存中。
  • 方法区,这个概念在学习Javase的时候也接触过一些。说的就是 jdk8 前后它的一些变化。要明确的概念就是,在逻辑上,方法区是属于堆内存的。
    • 在 jdk8 以前,方法区是属于堆内存。称为永久代

    • 在 jdk8 之后,方法区是属于本地内存的。称为元空间

MySQL

今天学习了一些 MySQL 中一条 SQL 语句的运行流程这么一个知识点。