Github user kiszk commented on a diff in the pull request:
https://github.com/apache/spark/pull/19222#discussion_r144458324
--- Diff:
common/unsafe/src/main/java/org/apache/spark/unsafe/memory/MemoryBlock.java ---
@@ -17,47 +17,168 @@
package org.apache.spark.unsafe.memory;
-import javax.annotation.Nullable;
-
import org.apache.spark.unsafe.Platform;
+import javax.annotation.Nullable;
+
/**
- * A consecutive block of memory, starting at a {@link MemoryLocation}
with a fixed size.
+ * A declaration of interfaces of MemoryBlock classes .
*/
-public class MemoryBlock extends MemoryLocation {
+public abstract class MemoryBlock {
+ @Nullable
+ protected final Object obj;
- private final long length;
+ protected final long offset;
+
+ protected final long length;
/**
* Optional page number; used when this MemoryBlock represents a page
allocated by a
- * TaskMemoryManager. This field is public so that it can be modified by
the TaskMemoryManager,
- * which lives in a different package.
+ * TaskMemoryManager. This field can be updated using setPageNumber
method so that
--- End diff --
@tejasapatil While we make it private, accessors (`setPageNumber` and
`getPageNumber`) has `final` attribute. Thus, JIT compiler will inline these
methods.
As a result, I think that this version with `final` accessors can achieve
the similar performance compared to the approach with `public` fields.
What do you think?
BTW, I will fix typo soon.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]