问题标签 [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.

0 投票
3 回答
933 浏览

java - 在这种情况下替换 Java ByteBuffer?

使用 Android Profiler 工具时,我发现我在代码的性能关键区域中使用了大量的 ByteBuffer。我一直致力于尽可能优化最大的性能损失(还没有被迫进行循环优化之类的工作),并且 ByteBuffer 代码看起来可以很容易地被另一个/更好的解决方案替换。

问题:从位于 ByteBuffer 流中的 4 个连续字节中获取一个 int,该字节可以是任意长度,当前使用临时 ByteBuffer 完成(见下文,特别是 //<<< 部分)并抓取所需的字节以形成一个 int。有没有更简单的流程?

请随时指出任何错误。直到最近我才使用过 ByteBuffers,并且很想学习。

0 投票
1 回答
1799 浏览

java - Java NIO/ MappedByteBuffer 和映射,分块读取文件的一部分

我想循环读取大文件的一部分。我不得不阅读整个文件,但这没有用,我收到文件太大的异常。我将代码更改为下面的清单。下面的代码只读取第一个块。我需要更改什么才能移动到下一个块。

0 投票
4 回答
7057 浏览

java - Java DirectByteBuffer 包装器是否被垃圾收集?

我知道分配directbytebuffer时,它不受垃圾收集的影响,但我想知道包装对象是否被垃圾收集。

例如,如果我分配了一个新的 DirectByteBuffer dbb,然后使用 dbb.duplicate() 复制(浅复制)它,我将在同一块内存周围有两个包装器。

这些包装器是否需要进行垃圾收集?如果我这样做了

我最终会自己OOM吗?

0 投票
1 回答
490 浏览

android - 通过 MappedByteBuffer 将原始 VBO 数据加载到 OpenGL(不工作)

我尝试通过 Google 在 GDC 2011 上的演讲中介绍的方法加载原始的、未压缩的 VBO 数据。该方法使用 MappedByteBuffer 在随后调用 glBufferData 时快速加载数据。不幸的是,对我来说,它只是行不通。我能够为它找到一个 hacky 工作(它在下面的代码中注释掉了),但我想在没有那个 hack 的情况下让它工作。这是我的代码示例:

0 投票
2 回答
2022 浏览

java - glReadPixels() 无法填充 ByteBuffer

好吧,我正在尝试使用 LWJGL 为 OpenGL 中的窗口截屏。这是代码:

和...

  • 我已经尝试过各种版本的代码,比如在 Display.update() 之前放置“Screenshot”块。并且使用 glReadBuffer(GL_BACK/GL_FRONT) 和 glDrawBuffer(GL_BACK/GL_FRONT) 的组合无济于事。

  • 我已禁用所有 OpenGL 状态和渲染,因此只出现一个空白屏幕并尝试使用 glReadPixels。缓冲区中应该有一个空白屏幕,但缓冲区中没有任何内容。

  • glGetError() 不会产生任何错误。

  • 我有一个可以正常工作的类似 C+ 版本。

  • 我在 NVIDIA Corporation GeForce GTS 450/PCI/SSE2 上运行 Windows 7、OpenGL 4.10 和 LWJGL 2.7.1 版。

所以有什么问题?有任何想法吗?提前致谢。

0 投票
1 回答
1533 浏览

java - 如何将 byte[] 转换为 bytebuffer 本机内存?

我需要将大量内存传递给 jni 端来解析它。我之前使用 GetByteArrayElements 来获取本机指针。但我发现这种方法总是复制内存,而不是直接使用内存。所以我使用 GetDirectBufferAddress 直接获取内存以避免内存复制。这就要求必须使用 allocateDirect 方法来分配内存。但是给我的内存是字节数组,不是本机内存。有没有办法将 byte[] 转换为 bytebuffer?谢谢。

0 投票
1 回答
1399 浏览

java - 将 jbyteArray 从(objective-c)JNI 传递到 Java 的最佳方法是什么?

我目前正在从 iSight 摄像头检索图像数据,我想将其交给 Java 进行处理。我最初尝试将数据放入 jbyteArray 并返回 jbyteArray。这对每个进程有效。再次调用本机函数将导致无效的内存访问。

由于我正在使用 Objective-c 和 Cocoa,因此我必须使用 JNF_COCOA_ENTER(...) 和 JNF_COCOA_EXIT(...) 函数。可悲的是,如果我不能返回 jbyteArray,因为这样做会导致 JNF_COCOA_EXIT(...) 不会被调用。建议使用直接 ByteBuffer 将数据从 JNI 域传递到 Java 域。不幸的是,我一直在使用的所有资源和参考资料并不足以让我的大脑理解这一点。如果这是一个“duh”时刻或已经被问到(我已经搜索但没有运气),我深表歉意,但是......

1) 将此图像数据带入 Java 的最有效方法是什么?

2)我应该如何使用 ByteBuffer 类来完成这个?(如果相关)

谢谢!

0 投票
2 回答
3416 浏览

java - 如何确定正在运行的 JVM 上的 MaxDirectMemorySize?

我有一个使用 DirectByteBuffers 存储数据的应用程序,但我想知道 MaxDirectMemorySize 是什么,所以我不会意外超过它。

如果不手动配置它,我怎么能从程序中弄清楚 MaxDirectMemorySize 是什么?

0 投票
3 回答
2842 浏览

java - Javolution ByteBuffer 问题

我对 Javolution 有以下实现:

在我们的通信类中,在将数据放入套接字之前,我们需要获取 RunScan 对象的 bytes[],但我们在“//<<<<<<<”行中获取了 BufferUnderflowException:

此方法适用于其他情况。发生异常是因为这一行,

我认为只返回 RunScan 对象的 8 个字节(来自剩余()方法)ByteBuffer,它们是这两个 Signed32 字段。但是这条线,

返回包含这两个数组大小的 RunScan 对象的正确长度。

如果我在使用硬编码长度声明它们(而不是在构造函数中“新建”它们)时创建这两个数组,那么它可以正常工作,没有任何例外。

任何人都可以帮我弄清楚我们的实施有什么问题吗?

0 投票
4 回答
4669 浏览

android - 如何确定 UsbRequest.queue(..) 方法接收字节的长度?

我在 Android 3.1 中遇到了 UsbRequest 类的问题。

这是我的代码:

数组的大小data为 4096,但实际接收到的字节长度要小得多。

我如何确定真正收到的字节的大小?

谢谢。