关于jvm\hashmap和java数据结构个人的一些理解

Jvm
类加载器(驱动)、运行时数据区(内存)、执行引擎(cpu)
驱动读取文件 存入内存 cpu去执行内存中的数据

内存包括5各部分 程序计数器、java栈、本地方法栈、 方法区和java堆
程序计数器、java栈、本地方法栈是线程私有的 一个线程一个栈
堆和方法区是公有的
Cpu通过程序计数器获取下一指令地址
Java栈存储私有数据 本地方法栈 默认执行的本地方法库
Java堆 存储实例 方法区 :所有定义的方法和信息 ,类加载器从此地读取class文件 包括静态变量常量+类信息(接口+构造方法)+运行时常量池

Java数据结构
数组 栈 队列 链表 树 堆 hash 图
数组 :变量有序
栈:先进后出
队列:线性表 前端删除 后面插入数据
链表:物理存储中非连续、非顺序的存储结构通过链表的指针连接而有了一定的逻辑顺序
树 特性是只有一个根节点,并且其他节点只有一个前驱可以有多个后继
堆 堆是一种特殊的树形结构 每个节点有一个值 根节点最大(最小)
Hash(散列表)对于关键字和K相等的字段 直接通过hash function获取
图(graph)将节点称为顶点 两顶点之间存在一条边,则称两顶点之间有相邻关系

HashMap
基于哈希表的map接口的非同步实现 ,他是链表散列的数据结构
本质上就是一个数组结构 Entry就是数组上的元素
每个entry都持有下一个数组的引用
根据hash后的key值获取地址存放value
获取键值对时首先将keyhash后获取内存地址 然后通过。Equals方法获取该entry

猜你喜欢

转载自blog.csdn.net/weixin_43590784/article/details/83959400