어..
개인용컴퓨터에서 이클립스에서 자바로 웹 크롤러를 만들었는데요.
문제는 밥먹고 오거나 자고 일어날 동안에서 실행 시켜놓으면 한시간 정도 돌아가다가 멈춰져있습니다.
컴퓨터 절전 세팅 문제인거같아서 OS 레벨에서 절전 안되게 해놨는데 시스템 BIOS 에서도 설정 해야 되는 지는 모르겠습니다.
혹시 이게 문제라면 BIOS에서 어떤 설정 부분을 건드려야 되는건가요?
아니면 차라리 그냥 서버쪽으로 옮겨서 서버에서 실행시키는게 나은가요?
그것도 아니면 절전문제가 아니라 이클립스나 JVM 쪽 설정문제인가요?
프로그래밍 초보라서 조언 좀 부탁드리겠습니다. 감사합니다.
메모리가 가득차서 Allocation fault인거 같네여~ 아무리 Managed Language들의 가비지 컬렉터가 뛰어나다고 해도 없는 메모리를 갖다 바치는건 불가능하져~ 크롤링해서 데이터를 리스트같은데 때려박지말고 크롤링한 본문은 파일로 뿌려버리고 데이터 분석은 별도로 수행하는게 올바른 방법이에여~
또 Java같은경우는 java -jar [JAR 파일명] -xms 메모리크기 이런 인자를 줘서 실행시킬 수있는데 이 메모리 크기값이 너무작지않은지 살펴보는게 선행되어야 되겟네여~
답변감사합니다. 저도 가비지 컬렉터 때문인가 생각하기도 했는데요. 거의 확실하게 컴퓨터에 일정시간동안 떨어져있으면 멈춰있더라구요. 그리고 크롤링하고나서 데이터를 자바 안에서 저장하지 말고 파일로 출력한다음에 그 파일을 다시 불러와서 분석 하는게 좋은 방법이라고 말씀하신거 같은데 제가 맞게 이해한건가요? 그리고 만약에 메모리가 가득차서 생기는 문제라면 콘솔창에 에러문이 나와야되는거 아닌가요?
아니면 제가 JVM 메모리 상태를 꽉 차있는지 아닌지 확인 할 수 있는 방법이있나요?
ㄴ 넹~ 이해 잘하신거같은데 메모리가 가득차서 생기는 문제가 맞다면 콘솔창에 에러문도 나와야 정상이겟지요~ 흠, 소켓 펄트일 수 있겟네여 소켓 블로킹 푸는걸 잊어먹었다던가 Unreachable host 에러나 Connection abort, connection reset 등의 상황에서 무한 블로킹으로 빠져버리는 경우가 종종있어영~
JVM 메모리 상태를 직접 확인할 방법은 딱히 없는 거 같네여~ 따로 그런 소프트웨어가 있지는 않는게 확실하구여~
소켓 무한 블러킹 걸리는거 그현상은 대부분의 클라이언트 소프트웨어들에서 발견되는 문제랍니당...ㅋ 대표적으로 putty가 있네영 카페에서 노트북으로 putty로 리눅스 쉘 작업하다가 집에 가보면 putty가 소켓 블러킹 걸려서 계속 접속이 된 것처럼 표시가 되더라구요....ㅋㅋㅋ
ㅠㅠ 저는 소켓 쪽은 잘 몰라서 ... 그냥 자바에서 지원해주는 API 가지구 만드는 중이라 ㅠㅠ java.net인가? 하여튼 조언 감사합니다!!
jcmd <pid> GC.heap_dump <filename>
jcmd <pid> Thread.print