摘要: 一、类文件结构 1、class类文件结构 1)魔数与Class文件的版本 2)常量池 3)类或接口层次的访问标志 4)类索引、父类索引、接口索引集合,通过这三项数据来确定这个类的继承关系 5)字段表,包括类级变量、实例级变量,是不包括方法内部声明的局部变量的,不会列出从父类或父接口中继承的字段 6) 阅读全文
posted @ 2018-07-29 14:20 湮天霸神666 阅读(120) 评论(0) 推荐(0) 编辑
摘要: JVM的GC日志的主要参数包括如下几个: -XX:+PrintGC 输出GC日志 -XX:+PrintGCDetails 输出GC的详细日志 -XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式) -XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形 阅读全文
posted @ 2018-07-29 14:14 湮天霸神666 阅读(592) 评论(0) 推荐(0) 编辑
摘要: 掌握三种垃圾算法,七种垃圾收集器,了解每种垃圾收集器使用的是哪种垃圾收集算法,以及关于SafePoint的知识点。 垃圾收集算法 1、标记-清除算法(Mark-Sweep) 先标记(如可达性算法)出所有需要回收的对象,标记完后再统一回收所有被标记的对象。 缺点:标记和清除过程的效率都不高,且清除后会 阅读全文
posted @ 2018-07-29 14:13 湮天霸神666 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 讲到垃圾回收,首先就要先知道哪些对象是可以回收的。 可达性算法 这里有必要先了解一下可达性算法,以“GC Roots”的对象作为起始点,若从“GC Roots”到某对象不可达时,此对象会被判定为可回收对象。 可作为GC Roots的对象包括下面几种: 1、虚拟机栈(栈帧中的本地变量表)中引用的对象。 阅读全文
posted @ 2018-07-29 14:12 湮天霸神666 阅读(277) 评论(0) 推荐(0) 编辑
摘要: Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决两个问题:给对象分配内存以及回收分配给对象的内存。 对象的分配可能有以下几种方式: 1、JIT编译后被拆散为标量类型并间接地栈上分配 2、对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配 3、 阅读全文
posted @ 2018-07-29 14:11 湮天霸神666 阅读(973) 评论(0) 推荐(1) 编辑
摘要: Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决两个问题:给对象分配内存以及回收分配给对象的内存。 一、内存分配策略 要了解堆空间内又分有哪几个内存区域(年轻代:eden、s1、s2,老年代),创建对象时按什么规则分配到堆。 1)对象优先在Eden分配,当Eden区没有足够空间进行分 阅读全文
posted @ 2018-07-29 14:10 湮天霸神666 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 在Java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError(下文称OOM )异常的可能。 1、Java堆溢出 Java堆用于存储对象实例,只要不断地创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么在 阅读全文
posted @ 2018-07-29 14:09 湮天霸神666 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 一、对象的创建 1、当虚拟机遇到一条new指令时,会先检查常量池中能否定位到这个类的符号引用,然后检查这个符号引用代表的类是否被加载、解析、初始化过。 2、如果类还未加载过,要先执行类加载过程,静态变量此时会有一个系统初始值。 3、类加载检查通过后,为新生对象在堆中分配内存,对象所需内存大小在类加载 阅读全文
posted @ 2018-07-29 14:07 湮天霸神666 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 一、JVM内存模型 1、程序计数器 线程私有,当前线程所执行的字节码的行号指示器,通过计数器来选取下条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等功能都依赖此功能,唯一没有规定OutOfMemoryError的区域,若执行的是Native方法,计数器值为空。 2、Java虚拟机栈 ( 阅读全文
posted @ 2018-07-29 14:05 湮天霸神666 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 对数据操作的类型: 读锁(共享锁)—— 同一数据,多个读操作可以同时进行 写锁(排他锁)—— 写操作未完成前,会阻断其他读锁和写锁 对数据操作的粒度: 表锁(偏读)—— 偏向MyISAM存储引擎,开销小,加锁快,无死锁,锁定粒度大,发生锁冲突的概率最高,并发度最低。 行锁(偏写)—— 偏向InnoD 阅读全文
posted @ 2018-06-10 20:54 湮天霸神666 阅读(648) 评论(0) 推荐(0) 编辑