chaokunyang commented on code in PR #2467:
URL: https://github.com/apache/fory/pull/2467#discussion_r2276197690
##########
docs/guide/java_serialization_guide.md:
##########
@@ -1089,6 +1089,84 @@ Note that when implementing custom map or collection
serializers:
Besides registering serializes, one can also implement
`java.io.Externalizable` for a class to customize serialization logic, such
type will be serialized by fory `ExternalizableSerializer`.
+### Memory Allocation Customization
+
+Fory provides a `MemoryAllocator` interface that allows you to customize how
memory buffers are allocated and grown during serialization operations. This
can be useful for performance optimization, memory pooling, or debugging memory
usage.
+
+#### MemoryAllocator Interface
+
+The `MemoryAllocator` interface defines two key methods:
+
+```java
+public interface MemoryAllocator {
+ /**
+ * Allocates a new MemoryBuffer with the specified initial capacity.
+ */
+ MemoryBuffer allocate(int initialCapacity);
+
+ /**
+ * Grows an existing buffer to accommodate the new capacity.
+ * The implementation must grow the buffer in-place by modifying
+ * the existing buffer instance.
+ */
+ MemoryBuffer grow(MemoryBuffer buffer, int newCapacity);
+}
+```
+
+#### Using Custom Memory Allocators
+
+You can set a global memory allocator that will be used by all `MemoryBuffer`
instances:
+
+```java
+// Create a custom allocator
+MemoryAllocator customAllocator = new MemoryAllocator() {
+ @Override
+ public MemoryBuffer allocate(int initialCapacity) {
+ // Add extra capacity for debugging or pooling
+ return MemoryBuffer.fromByteArray(new byte[initialCapacity + 100]);
+ }
+
+ @Override
+ public MemoryBuffer grow(MemoryBuffer buffer, int newCapacity) {
+ if (newCapacity <= buffer.size()) {
+ return buffer;
+ }
+
+ // Custom growth strategy - add 20% extra capacity
+ int newSize = (int) (newCapacity * 1.2);
Review Comment:
```suggestion
// Custom growth strategy - add 100% extra capacity
int newSize = (int) (newCapacity * 2);
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]