- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图在网上搜索,但没有找到答案。
基于java doc , ByteBuffer.wrap() 在每次调用中创建一个新的 ByteBuffer。在一个长时间运行的应用程序中,如果 gc 没有被触发,但应用程序一直在调用 ByteBuffer.wrap(),应用程序可能会使用更多的 java 堆之外的内存,并导致潜在的内存泄漏。是对的吗?
public static ByteBuffer wrap(byte[] array)
Wraps a byte array into a buffer.
The new buffer will be backed by the given byte array; that is, modifications
to the buffer will cause the array to be modified and vice versa. The new
buffer's capacity and limit will be array.length, its position will be zero,
and its mark will be undefined. Its backing array will be the given array, and
its array offset will be zero.
根据jdk代码,似乎答案是否定的,因为ByteBuffer.wrap()创建了一个新的HeapByteBuffer对象,但并没有在下面分配一个新的缓冲区。
public static ByteBuffer wrap(byte[] array,
int offset, int length)
{
try {
return new HeapByteBuffer(array, offset, length);
} catch (IllegalArgumentException x) {
throw new IndexOutOfBoundsException();
}
}
最佳答案
只有在保留数组或包装字节缓冲区的硬引用时才会出现问题。
“wrap”方法不像直接的 ByteBuffer 那样在堆外分配内存。垃圾收集器应该能够在发生 OutOfMemory 错误之前将其清理干净。
关于java - ByteBuffer.wrap(byte[]) 会导致长时间运行的应用程序内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32235309/
我有一个空的 byteBuffer 分配为 data = ByteBuffer.allocateDirect(layerSize(0, faces - 1, 0, levels - 1) * laye
虽然存在 ByteBuffer.put(ByteBuffer) 方法,但 ByteBuffer.get(ByteBuffer) 似乎丢失了?我应该如何从较大的 ByteBuffer 读取较小的 Byt
我在 Dart Web 应用程序中加载二进制文件,其中包含压缩音频数据作为二进制数据的一部分。当数据通过 http 请求加载时,它作为一个 ByteBuffer 出现,我理解它是 Dart 对 JS
假设我有一个列表/数组列表或字节缓冲区数组(List 或 ByteBuffer[]) 是否可以由此直接从上述数组中获取字节,而无需遍历所有项或计算它们的总大小?我正在寻找这样的东西: ByteBuff
我有一个或多个 ByteBuffer,其中包含一条消息的部分内容。现在我想阅读此消息,但我不想将 N ByteBuffer 复制到一个中。我的解析器需要一个包含完整消息的 ByteBuffer,但我的
如果已知它是其他缓冲区? 我知道这可以通过非直接数组支持的 ByteBuffer 使用 arrayOffset() 方法来完成,如下所示: int getRelativeBufferOffset(By
如何在 Dart 中将 ByteBuffer 的字节快速复制到另一个更大的 ByteBuffer(以非零偏移量)? 有一些缓慢的方法可以做到这一点。一种是将每个都转换为 Uint8List 并一次复制
嘿嘿, ByteBuffers 以及 netty 的 ByteBuff 使用索引来存储它们当前“所在”的位置。在我的应用程序开始时,我加载 ByteBuffers/ByteBuffs 中的多个文件以便
我知道 flip() 将当前缓冲区位置设置为 0,并将限制设置为上一个缓冲区位置,而 rewind() 只是将当前缓冲区位置设置为 0。 在下面的代码中,我使用 rewind() 或 flip() 得
我有一个数组 ByteBuffer s(实际上代表整数)。我想在数组中分离唯一和非唯一的 ByteBuffer(即整数)。因此我使用这种类型的 HashSet: HashSet columnsSet
我的代码中有一个 java.nio.ByteBuffer: ByteBuffer bb = ByteBuffer.allocateDirect(1024); ... 我希望能够将其替换为 ByteBu
我需要将代码从 Java 移植到 C#。在Java代码中,使用了方法“ByteBuffer.flip()”和“ByteBuffer.slice”,不知道怎么翻译。 我读过这个问题 ( An equiv
以下 Java 代码可以编译,但在运行时会出错: # javac ByteBufTest.java # java ByteBufTest Exception in thread "main" java
我有一个方法如下,它已经正常运行了很长时间: private String loadFromFile(){ RandomAccessFile inFile = null; FileCh
用户在测试中遇到了此崩溃。我的第一个猜测是这与内存有关,但除此之外我没有什么可做的。更深入地研究代码,我认为这可能是主线程问题,但看起来监听器在后台线程上被删除,所以我怀疑这就是原因。 我认为在应用程
以下代码(此为简化版)以前在jdk1.6中运行良好,现在在jdk 1.7下断言失败。 ByteBuffer buffer = ...; buffer.mark(); char c = (char) b
我有一个 10MB 的二进制文件。我需要以不同大小的 block (例如 300、273 字节)读取它。为了阅读,我使用 FileChannel 和 ByteBuffer。现在,对于每次读取迭代,我都
我想要做的是获取一个十进制整数,将其转换为十六进制,然后分隔字节。 据我了解,ByteBuffer 是实现此目的的最佳方法。整数不会超过65535,因此十六进制数保证为2个字节。例如,我有一个整数 4
我正在写一些使用 ByteBuffer 的东西s。在 docs of the API它说 There is no way to free a buffer explicitly (without JV
我正在尝试读取一个短数组,转换其元素并将它们放入字节数组中。我使用 ByteBuffer 并收回此异常: 线程“main”中的异常 java.lang.IndexOutOfBoundsExceptio
我是一名优秀的程序员,十分优秀!