0
XML 파일을 암호화하고 해독하기 위해 System.Security.Cryptography 라이브러리를 사용하고 있습니다. 최근에 75MB 파일의 암호를 해독하려고 시도하는 중 OOM (Out of Memory) 예외가 발생했지만 최근에. 나는 다른 사람이 문제가를 찾을 수 없어XML 파일을 암호 해독 할 때 "메모리 부족"예외가 발생했습니다.
Exception of type 'System.OutOfMemoryException' was thrown.
: 즉시 .DecryptDocument이() 나는 다음과 같은 오류가 불리는
using System.Security.Cryptography.Xml;
...
public static XmlDocument DecryptIntoXmlDoc(string filename)
{
//Decrypt the XML
XmlDocument xmldoc = new XmlDocument();
EncryptedXml exml = new EncryptedXml(xmldoc);
TripleDESCryptoServiceProvider ekey = new TripleDESCryptoServiceProvider();
ASCIIEncoding encoding = new ASCIIEncoding();
ekey.Key = encoding.GetBytes(GetMasterKey());
exml.AddKeyNameMapping("ekey", ekey);
xmldoc.Load(filename);
// -- THROWS THE OOM ERROR --
exml.DecryptDocument();
//Clear exml
exml = null;
return xmldoc;
}
: 여기에 내가 사용하고 코드입니다 ,하지만 XML 태그가 제대로 명명 된/중첩되지 않은 경우 파일을 메모리로로드 될 때 매우 커질 수 있습니다 읽었습니다. XML 태그의 이름을 더 짧은 이름으로 변경하면 크기가 줄어 듭니까? XML 태그를 중첩하여 파일 크기를 줄이는 방법이 있습니까?
내가 할 수 있는게 더 있습니까?
.NET의 메모리 문제를 처음 보았습니다. '객체 그래프'는 어디에 있습니까? – Nefariousity
@Nefariousity, 그것은 주어진 객체에 의해 참조되는 객체의 트리입니다. VS 디버거에서 watchlist에'exml'을 추가 한 다음 몇 개의 레벨에 대한 모든 멤버를 재귀 적으로 확장하여 어떤 종류의 데이터를 보유하고 있는지 파악하십시오. –
우. 잡았다. exml이 나오기 전에 xmldocument가 OOM 메시지를 던지고있는 것처럼 보입니다. XML의 이름을 바꾸거나 XML을 재구성하면 파일 크기가 줄어들 것이라고 생각하십니까? 압축이 도움이 될 수 있습니까? – Nefariousity