摘要: JVM内存模型和面试题解析 目录 一、JVM运行时区域 1 程序计数器 2 Java 虚拟机栈 3 本地方法栈 4 堆 5 方法区 6 运行时常量池 7 直接内存 二、对象创建过程 1、类加载检查 2、分配内存 3、初始零值 4、设置对象头 5、执行init方法 三、对象的内存布局 四、对象的访问定 阅读全文
posted @ 2020-12-27 13:05 渴望蓝天的白鸽 阅读(482) 评论(0) 推荐(0)
摘要: HashMap、HashTable、ConcurrentHashMap使用和原理分析(以及内存优化) 哈希码每个对象和基本类型都有的一个方法 hashCode() 可以获取其hashCode默认是 对象的地址经过hash算法转换的整数 String aa = "123"; String bb = " 阅读全文
posted @ 2020-12-27 13:01 渴望蓝天的白鸽 阅读(159) 评论(0) 推荐(0)
摘要: CPU时间片 时间片即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片,即该进程允许运行的时间,使各个程序从表面上看是同时进行的。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。而不会造成CPU资源浪费。 阅读全文
posted @ 2020-12-27 12:45 渴望蓝天的白鸽 阅读(1924) 评论(0) 推荐(0)
摘要: jvm 内存模型划分 根据JVM规范,JVM 内存共分为虚拟机栈,堆,方法区,程序计数器,本地方法栈五个部分。 程序计数器(线程私有):是当前线程锁执行字节码的行号治时期,每条线程都有一个独立的程序计数器,这类内存也称为“线程私有”的内存。正在执行java方法的话,计数器记录的是虚拟机字节码指令的地 阅读全文
posted @ 2020-12-27 12:08 渴望蓝天的白鸽 阅读(101) 评论(0) 推荐(0)
摘要: OutOfMemoryError-内存溢出的情况描述和解决方式 在解决java内存溢出问题之前,需要对jvm(java虚拟机)的内存管理有一定的认识。jvm管理的内存大致包括三种不同类型的内存区域:Permanent Generation space(永久保存区域)、Heap space(堆区域)、 阅读全文
posted @ 2020-12-27 11:46 渴望蓝天的白鸽 阅读(265) 评论(0) 推荐(0)
摘要: StackOverflowError 原因 : 函数调用栈太深了,注意代码中是否有了循环调用方法而无法退出的情况 原理 StackOverflowError 是一个java中常出现的错误:在jvm运行时的数据区域中有一个java虚拟机栈,当执行java方法时会进行压栈弹栈的操作。在栈中会保存局部变量 阅读全文
posted @ 2020-12-27 11:40 渴望蓝天的白鸽 阅读(512) 评论(0) 推荐(0)
摘要: 估算数据库数据在java中内存占用 首先我们需要了解java中Class的内存结构 第一个Class头的8个字节:这个字节存储了比如这个实例目前的锁信息、目前属于的堆类型,初始化进度等等。第二个区域,oop指针,这个字段存储的是这个类的定义,就比如Java反射可以拿到字段名称,方法名称这些值都是存储 阅读全文
posted @ 2020-12-27 10:22 渴望蓝天的白鸽 阅读(1134) 评论(0) 推荐(0)