问题标签 [bytebuffer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何垃圾收集Java中的直接缓冲区
我有一个内存泄漏,我已将其隔离到错误放置的直接字节缓冲区。
GC 收集包含这些缓冲区的对象,但不处理缓冲区本身。如果我实例化足够多的包含缓冲区的瞬态对象,我会得到这个令人鼓舞的消息:
我一直在寻找这个问题,显然
和
不工作。
java - Java:在原始数组上使用类型双关语?
我需要能够将字节数组转换为其他原始类型数组/从其他原始类型数组转换,但我需要类型 punning而不是强制转换。没有强制转换的原始副本的正确术语?
我认为可以执行以下操作:
不幸的是,似乎bb.asIntBuffer()
不是通过“按位”或“原始”复制内容来创建新的 IntBuffer,而是在现有 ByteBuffer 上创建新的“视图” 。这就是为什么.array()
打算失败。
我浏览了 JDK 的源代码,发现了一些类,所有这些缓冲区类都使用这些类并且可以做我需要的东西,但是是内部的(例如 class Unsafe
)。
虽然我认为可以通过将字节缓冲区包装在一些中ObjectInputStream
并通过读取原始值来实现我的目标.readInt()
,但我认为这将是一个混乱且缓慢的解决方法。
那么,如果不进行神奇的原始类型算术(移位、检查字节序……),还有其他可能的解决方案吗?
注意:我需要两个方向:byte[12] -> int[3] 和 int[3] -> byte[12]
java - ByteBuffer 回收类
我想知道如何编写一个ByteBuffer
回收类,它可以让我得到一个ByteBuffer
至少与指定长度一样大的回收类,并且它可以锁定ByteBuffer
正在使用的对象以防止它们被我的代码使用时使用。DirectByteBuffers
这将防止一遍又一遍地重建等等,而不是使用现有的。是否有现有的 Java 库可以非常有效地做到这一点?我知道 Javolution 可以使用对象回收,但是ByteBuffer
在这种情况下,它是否可以扩展到符合规定要求的类?
java - 哪些 JVM 不支持直接 java.nio.ByteBuffer?
Java NIO (在 Java 1.4+ 中)的发行说明表明支持直接 ByteBuffers 是一项可选功能。我很好奇哪些 JVM 供应商/口味不支持它?JNI 库是否应该始终为托管 ByteBuffers 编写代码并将直接 ByteBuffers 降级为优化?
谢谢
java - JNI - 带有 ByteBuffer 参数的本机方法
我有一个方法:
这个方法的javah C/C++头生成的是:
如何从 jobject 获取数据数组(即 ByteBuffer 实例)?
java - 如何将 OutputStream 中的数据放入 ByteBuffer?
在 Java 中,我需要将 OutputStream 中的内容(我自己将数据填充到该流中)放入 ByteBuffer。如何以简单的方式做到这一点?
iphone - CGDataProviderCopyData() 是否实际复制字节?还是只是指针?
我正在尽可能快地连续运行该方法,并且越快越好,所以很明显,如果CGDataProviderCopyData()
实际上是逐字节复制数据,那么我认为必须有一种更快的方法来直接访问该数据。 ..它只是内存中的字节。任何人都知道是否CGDataProviderCopyData()
真的复制了数据?或者它只是创建一个指向现有数据的新指针?
c# - 如何用垃圾填充字节数组?
我正在使用这个:
据我了解,这会初始化填充 0 的 10kb 缓冲区数组。
每次用垃圾数据填充这个数组(或初始化它)的最快方法是什么?
我需要使用该数组 > 5000 次,并且每次都用不同的垃圾数据填充它,这就是为什么我正在寻找一种快速的方法来做到这一点。数组大小也必须每次都改变。
java - 将 ByteBuffer 的一部分转换为字符串
我有一个 ByteBuffer 包含由 派生的字节String.getBytes(charsetName)
,其中“包含”意味着字符串包含 ByteBufferposition()
和之间的整个字节序列limit()
。
什么是我找回字符串的最佳方法?(假设我知道编码字符集)有什么比以下更好的(这看起来有点笨拙)
java - 使用 Java 的 ByteBuffer 读取数百万条消息
这是我的问题:一个大的 gzip 文件;数百万条消息。
每条消息包括:
根据TYPE
,我需要从 中的偏移量中读取几个字节,PAYLOAD
然后选择接受或拒绝消息。
我知道如何使用 java.io.DataInputStream 来做这种事情,但这似乎是 java.nio.ByteBuffer 的完美应用(见这里!)。但是,我需要一些帮助来设置它。
那么,如何使用 ByteBuffer 从我的 gzip 文件中读取消息?
更新
我想我想看到的是代码的骨架实现,它可以让我走上正确的轨道来有效地使用 ByteBuffer。谢谢!