重写equals方法的同时,重写hashCode的原因
1.Object 类是所有类的父类,其 equals 方法比较的是两个对象的引用指向的地址,hashcode 是一个本地方法,返回的是对象地址值。他们都是通过比较地址来比较对象是否相等的。
2.如果不重写equals,那么比较的将是对象的引用是否指向同一块内存地址,重写之后目的是为了比较两个对象的value值是否相等。
3.重写了 equals 方法,判断对象相等的业务逻辑就变了,类的设计者不希望通过比较内存地址来比较两个对象是否相等,而 hashcode 方法继续按照地址去比较也没有什么意义了,索性就跟着一起变吧。
内存溢出的场景和原因
1一次从数据库中加载太多数据
2集合类中有对象的引用 使用完没有即使清空
3线程过多
4代码中循环产生过多的对象实体
5方法调用过深
6jvm参数设置太小
优化代码 减少死循环 设置合理的jvm参数
异常类型