Java 打印字节时的内存
现在我正在尝试从文件中打印字节,它在小文件中运行良好,但是当我使用千兆字节范围的文件时,我会收到一个异常,说“OutOfMemoryError请求的数组大小超过VM”,通常我会使数组变小,但这是来自I方法,我无法控制它的输出 以下是原始代码:Java 打印字节时的内存,java,Java,现在我正在尝试从文件中打印字节,它在小文件中运行良好,但是当我使用千兆字节范围的文件时,我会收到一个异常,说“OutOfMemoryError请求的数组大小超过VM”,通常我会使数组变小,但这是来自I方法,我无法控制它的输出 以下是原始代码: public void convertToBytes() { try { for(byte binary:Files.readAllBytes(getCompressPath))
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.
我所做的一切都会导致outofmemory错误 你到底想做什么?只是打印字节?因此,在阅读时打印它们,而无需任何缓冲区 一般来说,您需要在内存中加载所有这些字节吗?如果是这样,你就没有机会了:你需要
- 更多记忆
- 调整-Xms和-Xmx虚拟机设置
- 更多记忆
- 调整-Xms和-Xmx虚拟机设置
- 更多记忆
- 调整-Xms和-Xmx虚拟机设置
- 更多记忆
- 调整-Xms和-Xmx虚拟机设置
- 你到底想做什么?只是打印字节?因此,在阅读时打印它们,而无需任何缓冲区
一般来说,您需要在内存中加载所有这些字节吗?如果是这样,你就没有机会了:你需要
- 你到底想做什么?只是打印字节?因此,在阅读时打印它们,而无需任何缓冲区
一般来说,您需要在内存中加载所有这些字节吗?如果是这样,你就没有机会了:你需要
- 你到底想做什么?只是打印字节?因此,在阅读时打印它们,而无需任何缓冲区
一般来说,您需要在内存中加载所有这些字节吗?如果是这样,你就没有机会了:你需要
read()
,对吗?如果可以从文件中读取字节,则返回0到255之间的int
值(即无符号字节值),如果没有更多字节,则返回-1。因此,如果在包含abc
和Unix行终止符的四字节文件上连续调用五次,它应该返回97、98、99、10和-1。该方法只有一个问题,即它不返回字节值。如果我读到一个写着“abc”的文本文件,我应该得到97,98,99,10你在调用无参数版本的read()
,对吗?如果可以从文件中读取字节,则返回0到255之间的int
值(即无符号字节值),如果没有更多字节,则返回-1。因此,如果在包含abc
和Unix行终止符的四字节文件上连续调用五次,它应该返回97、98、99、10和-1。该方法只有一个问题,即它不返回字节值。如果我读到一个写着“abc”的文本文件,我应该得到97,98,99,10你在调用无参数版本的read()
,对吗?如果可以从文件中读取字节,则返回0到255之间的int
值(即无符号字节值),如果没有更多字节,则返回-1。因此,如果在包含abc
和Unix行终止符的四字节文件上连续调用五次,它应该返回97、98、99、10和-1。该方法只有一个问题,即它不返回字节值。如果我读到一个写着“abc”的文本文件,我应该得到97,98,99,10你在调用无参数版本的read()
,对吗?如果可以从文件中读取字节,则返回0到255之间的int
值(即无符号字节值),如果没有更多字节,则返回-1。因此,如果在包含abc
和Unix行终止符的四字节文件上连续调用五次,它应该返回97、98、99、10和-1。