봇이 갈수록 느려지면 쓰레기 청소 해 보세요.
분류
봇관련
조회 수
4,172
추천 수
0
봇이 쓰는 스크립터인 자바스크립트(Java script)나 자바(Java)에 GC란게 있습니다.
GC란넘이 어떤넘이냐면 Garbage Collector의 약자로서 바로 메모리 쓰레기 청소기 되겟습니다.
근데 이넘(GC)이 상당히 짜증나는 넘입니다.
왜냐면 이넘 하는 역할이 쓰고 버려진 메모리 이리저리 수집해서 다시 윈도우에 돌려줘서 윈도우가 그 메모리 다시 쓸수있게 하는 녀석인데... 그게 GC가 게을러 터진거죠. 게을러서 웬만해선 쓰래기 모으지 않습니다.
원래 자바를 만든 선마이크로시스템즈에서 JAVA를 발표하며 대대적으로 떠든게 바로 GC였죠. '개발자들 더이상 메모리 할당 걱정마라!! 걍 메모리 가져다 쓰고 버리면 우리가 알아서 처리하겟다(GC로 -.-;;;)' 라고 하면서 나온게 GC입니다.
근데 이넘이 문제를 많이 일으켜요. GC는 시간이 나면 쓰레기 청소를 한다는겁니다. 시간없으면 '걍 나몰라!' 이러고 배째는거지요.
시간이 없다는건 어떤뜻이냐면 Thread Priority란게 있는데 이게 실행 우선순위입니다. 이 실행우선순위에서 GC가 낮은 순위로 밀려나 있어요. 즉 봇이 열심히 돌면 CPU점유율이 높아져서 GC가 우선순위에서 밀려 실행을 자주 못하는거예요. 그럼 계속 메모리 할당 받고 버려둔거 처리못하고 쌓여만 가죠. 그러다가 어느시점에서 크러쉬등의 사태나 페이지 파일(PF)을 사용하게 하죠.
그래서 sun사에서 내놓은게 사용자가 강제로 메모리 쓰레기청소를 시킬 수 있게 대책을 세워줬어요. 그러자 java의 짝퉁?인 java script도 대책을 세워줬나봐요.(아니면 d2jsp 개발자가 이 사태를 알고 있었던가요)우리의 주 관심사인 d2jsp인 경우 강제 쓰레기 청소기가 바로 runGC()함수 되겟습니다.
이 함수를 실행시키면 실행되는 시점에서 모든일을 중단하고 쓰레기 청소 깨끗하게 해 줍니다.
제가 이걸 실행하고 모니터링 해 본결과.. 심할땐 최고 2기가까지 잡아먹던 메모리를 거의 600메가 정도로 고정시켜 주더군요.
전 XP_ClearPosition 함수 안에서 runGC()호출합니다만 XP_ClearPosition()호출은 유닉몹만 잡는 봇인 경우 거의 해당사항이 없으므로 그런분은 캐릭컨피그 화일의 캐릭컨피그 함수 호출에서 한번만 실행해 주면 되겟습니다.
이외에도 이런류의 튜닝이 많은데.... 다 기억을 못하겟어요. 그때 그때 틀린거 수정한거라..기억나는데로 제가 튜닝한거 올려드리겟습니다.
3줄요약.
봇이 크러쉬를 자주 일으키거나 돌아가면서 자꾸 느려지면 runGC()함 써봐라.
runGC()란 넘은 강제로 쓰레기 청소한다.
쓰레기 청소하는 시점은 본인 맘대로 정해라.