現在、ファイルからバイトを印刷しようとしていますが、小さなファイルでは問題なく動作しますが、ギガバイト範囲のファイルを使用すると、「OutOfMemoryError 要求された配列サイズが VM を超えています」という例外が発生します。通常、配列を小さくしますが、これは私はそれが何を出力するかを制御できないという方法から来ています。
元のコードは次のとおりです。
public void convertToBytes()
{
try
{
for(byte binary:Files.readAllBytes(getCompressPath))
{
System.out.println(binary);
}
}
catch(IOException io)
{
System.out.println("An IO exception occured.");
}
catch(OutOfMemoryError noMemory)
{
System.out.println("Out of heap memory");
}
}//End of Method.
forループでループをネストしようとしました。また、次のように ByteBuffer クラスを使用してみました。
public void convertToBytes()
{
try
{
ByteBuffer b = ByteBuffer.allocate(10);
b.put(Files.readAllBytes(getCompressPath()));
for(byte binary:b.array())
{
System.out.println(binary);
}
}
catch(IOException io)
{
System.out.println("An IO exception occured.");
}
catch(OutOfMemoryError noMemory)
{
System.out.println("Out of heap memory");
}
}//End of Method.
私がすることはすべて、メモリ不足エラーを引き起こし続けます。