2011-03-02 3 views
1

뭔가 잘못하고 있거나 web.py 누출 메모리가 있습니까?web.py memory leak

import web 

class Index: 
    def GET(self): return 'hello web.py' 
app = web.application(('/*', 'Index'), globals()) 
app.run() 

위의 파일을 실행하십시오. 작업에서 사용하는 메모리 양을 확인하십시오. 브라우저의 localhost : 8080으로 이동하십시오. 브라우저를 닫고 (페이지가 캐시되지 않도록) 페이지를 다시 열고 메모리 사용이 어떻게 증가하는지 확인합니다. 브라우저를 닫고 페이지를 다시 방문 할 때마다 올라갑니다.

Win XP에서 Python 2.6을 실행 중입니다.

+0

Python 프로세스가 Windows (CLOSE_WAIT 모드의 소켓 버퍼 등)에서 사용하는 일종의 기본 리소스 일 수 있습니다. – Novikov

답변

4

코드를 실행하고 (urllib2를 사용하는 다른 파이썬 프로세스를 통해) 수천 개의 요청을 보낸 후 처음 몇백 개의 요청에 대해 약 200k 정도 증가한 다음 성장을 멈추는 것으로 나타났습니다. 이는 부당하게 보이지 않으며 메모리 누수를 나타낼 필요가 없습니다. 파이썬은 참조 카운팅과 가비지 콜렉션의 조합을 통해 자동 메모리 관리를 사용한다는 것을 기억하십시오. 따라서 메모리 사용의 모든 비트가 더 이상 사용되지 않는 순간에 재사용 될 수 있다고 보장 할 수는 없습니다. OS에서 메모리를 요청한 다음 더 이상 필요하지 않더라도 반환하지 않을 수 있습니다.

그래서 대답은 다음과 같을 것입니다. 잘못된 것은 아니지만 web.py는 메모리를 누설하지 않습니다.

+0

"web.py는 메모리 누수가 없음"을 +1합니다. Yandex는 web.py를 사용하여 매일 7 천만 페이지 뷰를 처리합니다. "Hello world!"라는 심각한 리소스 유출 문제를 발견 할 가능성은 매우 희박합니다. 응용 프로그램을 한 번에 한 페이지 씩 브라우저와 함께 사용하십시오. 또한 urllib2로 데모 앱을 몇 백 번 치고 메모리 사용량이 꽤 안정적으로 보였다. –

+0

아, 네, urllib을 사용하여 검사를해야한다고 생각했습니다. 감사. –