异常写入日志
package javaBase.io.others;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
//异常处理写入文件
public class ExceptionDemo {
public static void main(String[] args) {
int [] ary = new int[2];
try {
System.out.println(ary[3]);//数组下标越界
} catch (Exception e) {
try {
//添加当前时间并格式化
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = sdf.format(d);
PrintStream ps = new PrintStream("exception.log");
ps.println(time);//开头写入时间
System.setOut(ps);//改变System.out的输入目的
} catch (FileNotFoundException e1) {
throw new RuntimeException("日志文件创建失败!");
}
e.printStackTrace(System.out);
}
}
}
HashSet集合的内存泄露
package javaBase.reflect;
import java.util.Collection;
import java.util.HashSet;
/*
* 当一个对象存储到hashset中后,就不要修改那些参与计算哈希值的字段了
* 否则修改后的对象hashcode值与存入时不同,导致不能找到这个对象和单独删除该对象导致内存泄露
*/
public class ReflectTest {
public static void main(String[] args) {
Collection c = new HashSet();
Point p1 = new Point(3, 3);
Point p2 = new Point(5, 5);
Point p3 = new Point(3, 3);
c.add(p1);
c.add(p2);
c.add(p3);
c.add(p1);
// p1.y = 7;
c.remove(p1);//上面这句执行后会导致remove()找不到p1,从而不能删除
System.out.println(c.size());
}
}