JVM系列 —— GC基础

这是 JVM 系列的第十篇,见 JVM 系列

写在前面

前面的几篇文章分享了,JVM 的大概的流程,就差编译器和执行引擎这两部分,这两部分比较高级,大概有个了解就行。
接下来的几篇主要学习和分享一下 JVM 的垃圾收集机制。

哪些内存需要回收

在前面分享的文章中,JVM 运行时数据区域从随线程而创建和随进程而创建,随线程启动而创建的包括程序计数器Java栈(Java 方法栈)虚拟机栈(本地方法栈),随着进程启动而创建的区域包括Java堆方法区。对于随线程启动而创建的部分,实际上并不需要太多的关注,因为这些区域的内存分配和回收都是确定的,当方法或者是线程结束时,内存自然也就释放了,所以内存分配和回收的关键区域在于 Java堆和方法区,而且在 JVM 运行期间才知道创建了哪些对象,并且这两个区域还是线程共享的,不同的线程对于对象的引用也是在不同的时机触发,复杂度也就产生了。垃圾收集器关注的也是这些部分的内存该如何管理。

阅读更多

Spring Batch Mysql Schema

概览

spring batch 框架有自己的一套表结构,基本上跟和 java 对象相对应。

表名称 Java对象
BATCH_JOB_INSTANCE JobInstance
BATCH_JOB_EXECUTION JobExecution
BATCH_JOB_EXECUTION_PARAMS JobParameters
BATCH_STEP_EXECUTION StepExecution
BATCH_JOB_EXECUTION_CONTEXT, BATCH_STEP_EXECUTION_CONTEXT ExecutionContext

ERD 如下:
Spring Batch

这些表结构的初始化脚本在包 org.springframework.batch.core 包下。

阅读更多