public abstract class MemoryBuffer extends Object implements AutoCloseable
修饰符和类型 | 类和描述 |
---|---|
static interface |
MemoryBuffer.EventHandler
处理此 MemoryBuffer 事件的接口。
|
static class |
MemoryBuffer.MemoryBufferCleaner |
修饰符和类型 | 字段和描述 |
---|---|
protected long |
address |
protected MemoryBuffer.MemoryBufferCleaner |
cleaner |
protected boolean |
closed |
protected long |
id |
protected long |
length |
protected int |
refCount |
修饰符 | 构造方法和描述 |
---|---|
protected |
MemoryBuffer(long address, long length)
构造方法
|
protected |
MemoryBuffer(long address, long length, MemoryBuffer.MemoryBufferCleaner cleaner)
构造方法
|
protected |
MemoryBuffer(long address, long length, MemoryBuffer parent)
创建切片时使用的内部构造方法。
|
修饰符和类型 | 方法和描述 |
---|---|
protected void |
addressOutOfBoundsCheck(long address, long size, String type) |
void |
close()
关闭此缓冲区并释放内存
|
void |
copyFromMemoryBuffer(long destOffset, MemoryBuffer src, long srcOffset, long length, Cuda.Stream stream)
使用指定的 CUDA 流将 src 的子集复制到此缓冲区中,从 destOffset 开始。
|
void |
copyFromMemoryBufferAsync(long destOffset, MemoryBuffer src, long srcOffset, long length, Cuda.Stream stream)
使用指定的 CUDA 流将 src 的子集复制到此缓冲区中,从 destOffset 开始。
|
long |
getAddress()
返回此缓冲区指向的数据位置
|
MemoryBuffer.EventHandler |
getEventHandler()
返回此缓冲区当前的事件处理程序;如果未关联处理程序或此缓冲区已关闭,则返回 null。
|
long |
getLength()
返回此缓冲区的大小
|
int |
getRefCount()
获取此缓冲区当前的引用计数。
|
void |
incRefCount()
增加此列的引用计数。
|
void |
noWarnLeakExpected()
这是一个非常糟糕的 API,但由于 Java 和 GC,数据列的生命周期可能不明确。此 API 通知泄漏跟踪代码,此列预期会出现这种情况,并且在此发生时不应打印可怕的大警告。
|
MemoryBuffer.EventHandler |
setEventHandler(MemoryBuffer.EventHandler newHandler)
为此缓冲区设置事件处理程序。
|
abstract MemoryBuffer |
slice(long offset, long len)
从此缓冲区切出一部分。
|
String |
toString() |
protected final long address
protected final long length
protected boolean closed
protected int refCount
protected final MemoryBuffer.MemoryBufferCleaner cleaner
protected final long id
protected MemoryBuffer(long address, long length, MemoryBuffer.MemoryBufferCleaner cleaner)
address
- 内存位置length
- 此缓冲区的大小cleaner
- 用于清理内存。如果不需要清理,可以为 null。protected MemoryBuffer(long address, long length)
address
- 内存位置length
- 此缓冲区的大小protected MemoryBuffer(long address, long length, MemoryBuffer parent)
address
- 内存位置length
- 此缓冲区的大小parent
- 应该关闭的缓冲区,而不是关闭当前缓冲区。public void noWarnLeakExpected()
public final long getLength()
protected final void addressOutOfBoundsCheck(long address, long size, String type)
public final long getAddress()
public final void copyFromMemoryBuffer(long destOffset, MemoryBuffer src, long srcOffset, long length, Cuda.Stream stream)
destOffset
- 在此缓冲区中开始复制的偏移量。src
- 要从中复制的内容srcOffset
- src 中开始复制的偏移量length
- 要复制的字节数stream
- 要使用的 CUDA 流public final void copyFromMemoryBufferAsync(long destOffset, MemoryBuffer src, long srcOffset, long length, Cuda.Stream stream)
destOffset
- 在此缓冲区中开始复制的偏移量。src
- 要从中复制的内容srcOffset
- src 中开始复制的偏移量length
- 要复制的字节数stream
- 要使用的 CUDA 流public abstract MemoryBuffer slice(long offset, long len)
offset
- 切片开始的位置。len
- 要切片的字节数public MemoryBuffer.EventHandler setEventHandler(MemoryBuffer.EventHandler newHandler)
newHandler
- - 从此刻起使用的 EventHandlerpublic MemoryBuffer.EventHandler getEventHandler()
public void close()
AutoCloseable
中的 close
指定public void incRefCount()
public int getRefCount()
Copyright © 2025. 保留所有权利。