抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

类加载过程

当程序主动使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、连接、初始化3个步骤来对该类进行初始化。如果没有意外,JVM将会连续完成3个步骤,所以有时也把这个3个步骤统称为类加载或类初始化。

JVM虚拟机执行class字节码的过程可以分为7个阶段:加载、验证、准备、解析、初始化、使用、卸载

(没事多看书,多总结,多动手。)

字数:2.2k 字 时长:7 分钟 技术 JVMJava

虚拟机内存管理

JVM所管理的内存包括以下几个运行时数据区域:

不同虚拟机实现可能略微有所不同,但都会遵从 Java 虚拟机规范,Java 8 虚拟机规范规定,Java 虚拟机所管理的内存将会包括以下几个区域:

  • 程序计数器(Program Counter Register)
  • Java 虚拟机栈(Java Virtual Machine Stacks)
  • 本地方法栈(Native Method Stack)
  • Java 堆(Java Heap)
  • 方法区(Methed Area)
字数:1.7k 字 时长:6 分钟 JVMJava

内存动态分配和垃圾收集技术

GC:哪些内存需要回收?什么时候回收?如何回收?

当需要排查各种内存溢出、内存泄露问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,就需要对内存动态分配和垃圾收集技术实施必要的监控和调节。

垃圾收集器关注的是Java堆和方法区中的动态分配和回收的内存。

判断对象存活与否?

1、引用计数算法:主流的Java虚拟机未采用,很难解决对象之间相互循环引用的问题

2、可达性分析算法:判定对象是否可回收

对象真正死亡:至少经历两次标记过程:finalize()最多执行一次


一、垃圾收集算法:

1.标记-清除算法 Mark and Sweep

分为标记和清除两个阶段,是最基础的收集算法,主要不足:1、效率问题;2、空间问题:标记清除之后会产生大量不连续的内存碎片,导致之后在程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另一次GC。

字数:3.7k 字 时长:13 分钟 JVMJava

一、内存模型

1.分为主内存和工作内存,分别对应虚拟机内存的堆内存、栈内存、方法区

2.8大基本操作:lock->unlock, read->load->use->assign->store->write

3.原子性、可见性、有序性

二、线程安全与高效并发:

线程调度:

1.内核线程(KLT)

2.用户线程(UT)

3.用户线程(UT)与轻量级进程(LWP)的混合模式

高效并发:

多线程环境下,线程资源的安全调用:

先行发生原则:happens before原则:

字数:716 字 时长:2 分钟 JVMJava


本站总访问量为 次 访客数为 人