jjunil.egloos.com

SPARKLE.HOLIC :: 스파클.홀릭

포토로그



2005/10/18 02:07

Out of Memory log(myself)

ㅡ_ㅡ; 날림 프로그래밍은 역시 안된다.

Java에도 명시적으로 메모리 해제를 해줄 수 있기를 희망한다.
역시 내 내공 부족인가...

허긴.. 로직도 형편없이 만드니.. ㅡㅡ;

여튼, 현재 RSS Channel 을 모으기 위해 간단한 크롤러를 돌렸다.

말이 크롤러지.. 각 블로그 포탈 사이트의 랜덤 블로구 모듈을 호출해서
블로그 메인 페이지의 링크들로부터 RSS 문서 링크를 찾아내어 오는 프로그램이다.

역시 이것도 허접하게 한달 반쯤전에 만들었다.
기존에 존재하는 BFS 크롤러를 뜯어 고쳤다.
뜯어 고치다 보니 외관만 그대로고 내부는 엉망진창 내맘대로 로직이 적용되었다. ㅡ_ㅡ;

논문때문에 블로그의 RSS 채널 주소를 좀 모아야 한다.
대략 만개정도 생각중이다.

헌데, 이놈의 프로그램이 300개정도 모으면 Out of Memory 를 뱉어내는 것이다.
제길... 중간 중간 reference var.에 null도 대입하고
한 로직이 끝나면 System.gc()를 호출하고...
이렇게 해도 역시나 Out of Memory를 뱉어낸다.

음.. 메모리 관리.. 명시적으로 하고 싶다.
free 로 해제해 버리고 싶다.

여튼, 결국..
Java -256m ...
VM의 메모리 할당량을 늘려서 1000개 정도를 한번에 모으는데는 성공했다.
ㅡ_ㅡ; 이거 별로 안좋은 방법이다. 망치로 안깨지니 그냥 해머를 새로 사와서 해결하는 방법.

근데 꽤나 시간 잡아먹는군.

한가지 궁금한게 있다.
Java에서 내가 알고있는 주소가
서버측에서 Redirect 혹은 Forward 되었을때
그 주소를 어떻게 가져올 수 있을까?
지금 현재는 JEditorPane을 이용해서, 해당 주소의 컨텐츠를 가져와서, 주소를 뽑아내는 방법을 취하고 있지만,
괜한 오버로드가 큰듯하다.

그냥 변환된 주소만을 알고 싶다.
아시는 분은 답변좀 부탁드립니다. ( - - ) ( _ _ ) 꾸벅

덧글

  • 곰곰이 2005/10/18 10:05 # 답글

    art of java책 소스코드를 많이 참고 하신거 같은데요?
    (전적으로 UI만 보구 말씀드리는겁니다. ^^;)
    저도 처음엔 소스코드 많이 참고 했었습니다.

    로봇을 만드신다면 굉장히 신경쓰셔야할게 많습니다.
    http 프로토콜에 대해서도 아셔야 하구, url 중복룰, url 노말라이제이션, html 파서, 네트웍 프로그래밍 등등
    특히나 엉망인 html 코드에서 링크정보를 가져오는 일 등등

    천천히 하시구요.
    자바 out of memory에러는 코드상에 문제가 있을 가능성이 99%입니다. 예를 들어 for문이나 while문안에서 덩치가 큰 객체를 마구잡이로 생성한다든지 하는거죠.

  • v쭌쓰v 2005/10/18 13:30 # 답글

    곰곰이 님: 네~ Art of Java 많이 참고했지요~ ^^
    아무래도.. 웹 페이지를 가져오는 부분에서 제가 실수를 한 것 같군요. while 이나 for 문 안에 있는걸 왠만큼 손본다구 했는데도.. ㅡ.ㅡ; 역시.. 전 아직 멀었습니다.

    ^ㅡ^; 답변 감사드려요~~
  • 최종욱 2007/03/04 13:37 # 답글

    GC 쓰지 마세요 으흐.
댓글 입력 영역