커뮤니티

전략 수행,종료를 반복하면 메모리 사용량이 계속 늘어나는데 왜 그런지?

프로필 이미지
김태희
2015-05-08 20:46:47
507
글번호 85869
답변완료
예스스팟 스튜디오에서 옵션 5월물 전종목을 통째로 for문으로 돌려서 ReqMarketData() 로 추가시키는 수식을 작성하여 예스트레이더(하이투자증권) 예스스팟 6131 화면에서 수행을 시켰다 종료시켰다가 하는 중에 이상한 점이 있어 문의드립니다. 작성한 수식 자체는 오류 발생없이 정상적으로 잘 수행됩니다. 근데, 윈도우 작업관리자를 띄워서 프로세스 탭을 선택하여 YesTraderRun.exe *32를 확인해 보면 메모리 사용량이 계속 증가하더군요. 제가 스팟으로 작성한 전략을 실행시켰다 중지시켰다 몇 번 하면 이 메모리 사용량이 계속해서 늘어납니다. 전략을 실행시킬때는 추가시키는 종목수도 많으니까(5월물만 해도 100개 가까이 되죠) 사용하는 메모리량이 늘어나는게 당연하겠지만 전략을 종료시키면 메모리량도 다시 줄어들어야 하는거 아닌가요? 이게 늘어나면 늘어났지 줄어들질 않아요. 작성한 수식은 대략 아래와 같습니다. 사실은 이보다 더 복잡하지만...수식을 작성한 기본 패턴만 요약하였습니다. ReqMarketData()로 종목들을 추가하여 OnRcvMarketData() 이벤트에서 받은 종목객체를 전역변수에 저장하여 실제로 종목객체를 사용하는데도 별 문제가 없습니다. 예스스팟 6131 화면에서 실행중인 전략을 종료시키면 OnClose()에서 종목객체가 제거되는 것도 확인했습니다. 근데도 작업관리자에서 확인해보면 YesTraderRun.exe *32 가 사용하는 메모리량은 계속 해서 늘어나더군요. 예스트레이더 HTS 자체를 종료시키기 전까진 메모리를 계속해서 잡아먹습니다. 예스스팟 6131 화면에서 전략을 종료시키면 ReqMarketData() 로 추가시킨 종목객체도 다 제거되고, 수식에서 선언한 전역변수 들도 전략 종료와 함께 다 해제되어 스팟전략이 사용하던 메모리도 자동으로 윈도우 시스템에 반납되지 않나요? 제가 수식을 잘못 작성한 건지...뭐가 문제인지 잘 모르겠습니다. var global_MarketData; function Main_OnStart() { Main.ReqMarketData(jongmok_code, 0, 0); } function Main_OnRcvMarketData(MarketData) { global_MarketData = MarketData; } function Main_OnClose() { Main.RemoveMarketData(global_MarketData); }
사용자 함수
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2015-05-11 10:58:41

안녕하세요 예스스탁입니다. 수식에 잘못된 부분이 있지는 않습니다. 예스스팟이 사용하는 자바스크립트의 엔진(V8)의 메모리 관리하는 체계에 따른 부분으로 실행된 전략이 실행종료가 되도 바로 메모리에서 삭제되지 않습니다. 프로그램을 종료하셔야 삭제됩니다. 또한 해당 엔진이 실행속도를 위해 메모리를 좀더 많이 사용합니다. 즐거운 하루되세요 > 김태희 님이 쓴 글입니다. > 제목 : 전략 수행,종료를 반복하면 메모리 사용량이 계속 늘어나는데 왜 그런지? > 예스스팟 스튜디오에서 옵션 5월물 전종목을 통째로 for문으로 돌려서 ReqMarketData() 로 추가시키는 수식을 작성하여 예스트레이더(하이투자증권) 예스스팟 6131 화면에서 수행을 시켰다 종료시켰다가 하는 중에 이상한 점이 있어 문의드립니다. 작성한 수식 자체는 오류 발생없이 정상적으로 잘 수행됩니다. 근데, 윈도우 작업관리자를 띄워서 프로세스 탭을 선택하여 YesTraderRun.exe *32를 확인해 보면 메모리 사용량이 계속 증가하더군요. 제가 스팟으로 작성한 전략을 실행시켰다 중지시켰다 몇 번 하면 이 메모리 사용량이 계속해서 늘어납니다. 전략을 실행시킬때는 추가시키는 종목수도 많으니까(5월물만 해도 100개 가까이 되죠) 사용하는 메모리량이 늘어나는게 당연하겠지만 전략을 종료시키면 메모리량도 다시 줄어들어야 하는거 아닌가요? 이게 늘어나면 늘어났지 줄어들질 않아요. 작성한 수식은 대략 아래와 같습니다. 사실은 이보다 더 복잡하지만...수식을 작성한 기본 패턴만 요약하였습니다. ReqMarketData()로 종목들을 추가하여 OnRcvMarketData() 이벤트에서 받은 종목객체를 전역변수에 저장하여 실제로 종목객체를 사용하는데도 별 문제가 없습니다. 예스스팟 6131 화면에서 실행중인 전략을 종료시키면 OnClose()에서 종목객체가 제거되는 것도 확인했습니다. 근데도 작업관리자에서 확인해보면 YesTraderRun.exe *32 가 사용하는 메모리량은 계속 해서 늘어나더군요. 예스트레이더 HTS 자체를 종료시키기 전까진 메모리를 계속해서 잡아먹습니다. 예스스팟 6131 화면에서 전략을 종료시키면 ReqMarketData() 로 추가시킨 종목객체도 다 제거되고, 수식에서 선언한 전역변수 들도 전략 종료와 함께 다 해제되어 스팟전략이 사용하던 메모리도 자동으로 윈도우 시스템에 반납되지 않나요? 제가 수식을 잘못 작성한 건지...뭐가 문제인지 잘 모르겠습니다. var global_MarketData; function Main_OnStart() { Main.ReqMarketData(jongmok_code, 0, 0); } function Main_OnRcvMarketData(MarketData) { global_MarketData = MarketData; } function Main_OnClose() { Main.RemoveMarketData(global_MarketData); }