java heap space

DB에 저장하기 위해서 실제로 h2데이터베이스로 테스트하다가 java heap space오류를 만남

파일닫기의 close나 ArrayList를 GC에서 처리하지못해서인줄알았으나 h2 인메모리DB를 사용해서 벌어진 일이었다.

인메모리 DB는 데이터를 메모리에 저장하기에 일정이상의 데이터를 넣는다면 결국 힙에 쌓인 데이터로 인해서 오류가 나타나는 것은 당연한 일이었다.

이로인해서 인메모리 DB에 대해서 알게되었다.

csv 파일의 라인변경

실제 csv파일을 받았을때 빈 공백라인이나 파일이 다음과 같이 짤리는 경우가 있었다.

Untitled

하나의 데이터만 이러는게 아닌 여러번 문제가 생겼기에 csv파일 수정보다 코드를 조금 교체하면 될것같아서 다음과 같이 코드를 변경했다.

//한줄 밀리는 현상에 대해서 픽스하기위한 코드
                            if(lineArr.length!=13){
                                StringBuilder sb = new StringBuilder();
                                sb.append(line);
                                line = br.readLine();
                                sb.append(line);
                                lineArr = sb.toString().split("\\\\|");
                            }

만약 코드가 밀렸다면 다음과 같은 처리를 통해서 데이터를 다시한번 받아서 해결했다.

실제로 데이터를 받을 때 문제는 없었지만 만약 3번쪼개진 데이터나 이런것에 대해서는 취약한 코드이기에 더 안전한 코드를 짜는것도 좋은 방법일것 같다.

오픈API를 사용하여 데이터를 가져오는데 시간이 많이 소요된다

원인: 오픈 API를 사용하여 데이터를 가져와 저장할려고 했지만 1000건의 데이터당 10초 60,000건의 데이터에는 1시간이 소유되었다.

해결방안: 오픈 API 대신 도서관 325개관의 csv파일을 전부 다운받아 DB에 저장하였다.