1、如何理解内存泄漏问题?有哪些情况会导致内存泄露?如何解决?
对于应用程序来说,当对象已经不再被使用,但是java的垃圾回收器不能回收他们的时候,就产生了内存泄漏。未引用对象将会被垃圾回收器回收,而引用对象却不会,未引用对象显然都是无用的对象,然而无用的对象并不都是未引用对象,有些无用对象也有可能是引用对象,这部分对象正是内存泄漏的来源。
如何阻止内存泄漏
使用List,Map等集合时,使用完成后赋值为null
使用大对象时,在用完后赋值为null
使用字符串处理,避免使用String,应大量使用StringBuffer,每一个String对象都得独立占用内存一块区域
尽量少用静态变量,因为静态变量存放在永久代
目前已知jdk1.6的substring()方法会导致内存泄漏
避免一些死循环等重复创建或对集合添加元素,称爆内存
简洁数据结构,少用静态集合等
及时的关闭打开的文件,socker句柄
2、怎样理解强一致性,弱一致性,最终一致性?
cap原理中,有三个要素:一致性,可用性,分区容忍性
cap原理三个要素中最多只能同时实现俩点。对于分布式数据系统,分区容错性是最基本要求,大多数情况下会牺牲一致性而换取高可用性。
最终一致性从客户端来看一致性要指的是多并发访问时更新过的数据如何获取的问题,从服务端来看,则是更新如何复制分布到整个系统,以保证数据的最终一致。对于关系形数据库,要求更新过的数据能被后续的访问都能看到,是强一致性&#x