An object that keeps a org.apache.arrow.memory.ArrowBuf's underlying memory alive.
| 29 | |
| 30 | |
| 31 | class _JvmBufferNanny: |
| 32 | """ |
| 33 | An object that keeps a org.apache.arrow.memory.ArrowBuf's underlying |
| 34 | memory alive. |
| 35 | """ |
| 36 | ref_manager = None |
| 37 | |
| 38 | def __init__(self, jvm_buf): |
| 39 | ref_manager = jvm_buf.getReferenceManager() |
| 40 | # Will raise a java.lang.IllegalArgumentException if the buffer |
| 41 | # is already freed. It seems that exception cannot easily be |
| 42 | # caught... |
| 43 | ref_manager.retain() |
| 44 | self.ref_manager = ref_manager |
| 45 | |
| 46 | def __del__(self): |
| 47 | if self.ref_manager is not None: |
| 48 | self.ref_manager.release() |
| 49 | |
| 50 | |
| 51 | def jvm_buffer(jvm_buf): |