杂记

1. 在 java 面向对象设计中，什么时候使用抽象类？什么时候使用接口？

一般将 名词 设计为抽象类

例如：动物、汽车、水果

将 动词、功能 设计为接口

例如：DAO 、service、controller

2. 内存溢出和内存泄漏指的是什么？

内存溢出 是指 内存无法承载写入的数据。 假设内存只有 100M，现在需要将 200M 的东西写入到内存，这时候就会发生内存溢出的问题。

内存泄露 是指 内存中存在未释放的内存，导致未释放的内存长期占用内存。 假设有 100M 的内存，往里面写 80M 的内容，明明内存够却发生报错，就可能发生了内存泄露。

可能得原因有 1. 未释放上次使用的内存（可人为析构，就可避免这个问题） 2. 内存碎片 (内存碎片问题无法解决，只能尽可能小，使用内存管理器)

--------------------------------------未完待续-----------------------------------