자바 스윙에서 낙서 타입 앱을 개발 중입니다. 그것은 초보적인 단계에 있으며 여기에 표시됩니다.스윙 앱의 실행 취소 힙 오버플로
나는 개까지 마지막 그려 스트로크를 실행 취소 실행 취소 기능을 구현했습니다. 실행 취소 기능은 최대 정의 된 실행 취소 레벨까지 수행 할 수 있습니다.
실행 취소 기능은 각 스트로크 후 그림 캔버스의 내용을 Image array
에 복사하여 작동합니다. 이 배열은 First-In-Last-Out
Stack처럼 동작합니다. 실행 취소를 클릭하면 스택은 poped
이고 얻은 이미지가 화면에 그려집니다.
지금 제가 직면 한 문제는 현재 실행 취소 방법이 너무 많은 메모리를 차지한다는 것입니다. 20의 실행 취소 수준에서 거의 70-80MB의 메모리가 사용되며 30 단계에서 힙 오버플로가 발생합니다.
실행 취소 기능을 구현하는 더 좋은 방법이 있습니까? 감사.
편집 : 유용한 정보가 유용 할 것 같습니다. here. 도움이 될만한 정보가 있습니다.
모든 뇌졸중 후 전체 이미지를 저장하는 것처럼 들립니다. 이 올바른지? 제 생각에는 각 개별 획을 저장 한 다음 모든 개별 획에 따라 이미지를 그립니다. – adchilds
@adchilds 네, 각 스트로크 후 전체 이미지를 저장하고 있습니다. –
@adchilds는 패치와 같은 이전의 변경 사항 만 저장하는 것을 제안합니다. –