C#에서 여러 줄 텍스트 상자를 사용하여 일부 추적 정보 만 기록합니다. 나는 라인을 추가해야하기 때문에 간단히 AppendText("text-goes-here\r\n")
을 사용한다.C# multiline textbox 메모리 사용 문제
나는이 프로그램을 며칠 동안 (많은 활성 트레이스로) 실행시키고 많은 메모리를 사용하고있는 것으로 나타났습니다. 간단히 말해, maxlength 값이 매우 작은 것 (256)이라 할지라도 텍스트 상자의 내용 만 계속 확장됩니다.
FIFO (maxlength 크기를 초과하는 가장 오래된 텍스트를 버리기)처럼 작동한다고 생각했습니다. 그것은, 단지 크기가 계속 증가하지 않습니다. 이것은 분명히 내 기억 낭비의 원인입니다. 아무도 내가 뭘 잘못하고 있는지 알아?
이 추가 된 몇 시간 초기 질문 후 ... 좋아, 나는 아래에 제안 된 코드를 시도했다. 신속하게 테스트하려면, 단순히 타이머를 앱에 추가하고 타이머 틱에서 아래 코드와 기본적으로 동일한 메소드를 호출합니다. 틱 속도가 높기 때문에 프로세스의 메모리 사용을 관찰하고 누수가 있는지 신속하게 확인할 수 있습니다. 없었다. 그거 좋았어; 그러나, 나는 이것을 응용 프로그램에 넣었고 메모리 사용량은 변경되지 않았습니다 (여전히 누설 됨). 확실하게 내가 누수가있는 것을 암시하는 것처럼 보인다 :-(하지만, 단순히 그 메소드의 최상단에 리턴을 추가하면, 사용량이 안정으로 떨어진다.) 이것에 대한 생각? 타이머 틱에서 호출 된 코드는 메모리를 축적하지는 않지만 실제 코드 (동일한 메서드)는 않습니다. 차이점은 실제 코드의 다양한 위치에서 메서드를 호출한다는 것입니다. 호출의 컨텍스트가 어떻게 든이 코드에 영향을 미칠 수 있습니까? (참고, isn 이미 명확한, 나는 어떤 방법으로 .NET 전문가가 아니야).
텍스트 상자를 사용하여 데이터베이스에 기록하거나 이벤트 로그에 기록하지 않는 이유가 있습니까? – Thyamine
다중 행 텍스트 상자가 클라이언트 측에서 TEXTAREA HTML 컨트롤로 렌더링되므로 maxlength와 같은 속성을 쉽게 무시하는 ASP.NET의 일반적인 문제입니다. 나는 이것이 winforms라고 생각 하나? – MusiGenesis
Thyamine .. 이유는 단순입니다. 나는 단지 프로그램의 런타임 트레이스를 볼 수 있기를 원한다. AppendText()가 FIFO처럼 작동하기를 바랬습니다. –