2015-10-05 5 views
1

Я создаю ASN1 формат файла с именем файла, тип файла контента и FILEDATA когда-либо я импортировать большой размер файла он дает ошибку Java кучу пространства.ASN1 создание файла дает ошибку для большого размера файла

ASN1EncodableVector seq = new ASN1EncodableVector(); 
seq.add(new DERTaggedObject(false, 0, new DERSequence(new DERUTF8String(new File(filePath).getName())))); 

    seq.add(new DERTaggedObject(false, 1, new DERSequence(new DERUTF8String(fileContentType)))); 
     seq.add(new DEROctetString(fileDataInBytes)); 
     ASN1InputStream tempstream=new ASN1InputStream(new ByteArrayInputStream(bytesArray)); 
     ASN1Sequence seq1=(ASN1Sequence)tempstream.readObject(); 
     seq.add((ASN1Encodable) seq1); 
    byte[] filebytes= new DERSequence(seq).getEncoded();//On this line i am getting error of heap size 
    FileUtils.writeByteArrayToFile(new File(fileName) , filebytes); 

Есть ли альтернативный способ сделать то же самое.

ответ

0

Вы пишете и, следовательно, промывку всего содержимого байта [] на один раз, когда вы используете команду: -

FileUtils.writeByteArrayToFile(new File(fileName) , filebytes); 

1) Вам нужно уменьшить размер filebytes и держать промывку его регулярно, скажем, в петлях. Вам нужно определить, сколько байтов [] вы хотите сохранить в памяти, прежде чем писать следующий набор байтов []. Таким образом, вы можете управлять размером кучи. Использование

public static void writeByteArrayToFile(File file, 
          byte[] data, 
          boolean append) 
            throws IOException 

Это будет добавить данные в файл

2) Вы можете установить щёток и максимальный размер кучи с помощью XMS и опции XMX (хотя я не owuld предложить это)

+0

спасибо Я могу добавить байта байта в файл. можете ли вы объяснить свой код? как вставлять в файл? –

+0

да .. вы можете сделать that.You должен убедиться, что размер байта [] не очень высок и может управляться с помощью JVM в своей heap.You могут также проверить перегруженные методы writeByteArrayToFile.It компенсировали и чтобы определить длину байта и позицию –

+0

. Моя проблема в том, что только я должен разрешить файл с большим размером. и почему байт [] становится очень высоким. , что почему я получаю ошибку на этой линии байт [] filebytes = новый DERSequence (сл) .getEncoded(); кодирования вычисления больше байт, поэтому размер кучи становится полным. –

Смежные вопросы