摘要:
对于一个存在于Java虚拟机中的对象来说,其内部的状态只保持在内存中。JVM停止之后,这些状态就丢失了。在很多情况下,对象的内部状态是需要被持久化下来的。提到持久化,最直接的做法是保存到文件系统或是数据库之中。这种做法一般涉及到自定义存储格式以及繁琐的数据转换。对象关系映射(Object-relational mapping)是一种典型的用关系数据库来持久化对象的方式,也存在很多直接存储对象的对象数据库。对象序列化机制(object serialization)是Java语言内建的一种对象持久化方式,可以很容易的在JVM中的活动对象和字节数组(流)之间进行转换。除了可以很简单的实现持久化之外, 阅读全文
摘要:
本期的案例依然是来自实际项目,很寻常的代码,却意外遭遇传说中的Java"内存溢出"。 先来看看发生了什么,代码逻辑很简单,在请求的处理过程中:1. 创建了一个ArrayList,然后往这个list里面放了一些数据,得到了一个size很大的listList cdrInfoList = new ArrayList();for(...) { cdrInfoList.add(cdrInfo);}2. 从这个list里面,取出一个size很小的sublist(我们忽略这里的业务逻辑) cdrSublist = cdrInfoList.subList(fromIndex, toInde 阅读全文