public long getOffsetInPage(long pagePlusOffsetAddress) {
        final long offsetInPage = decodeOffset(pagePlusOffsetAddress);
        if (tungstenMemoryMode == MemoryMode.ON_HEAP) {
            return offsetInPage;
        } else {
            // In off-heap mode, an offset is an absolute address. In encodePageNumberAndOffset, we
            // converted the absolute address into a relative address. Here, we invert that operation:
            final int pageNumber = decodePageNumber(pagePlusOffsetAddress);
            assert (pageNumber >= 0 && pageNumber < PAGE_TABLE_SIZE);
            final MemoryBlock page = pageTable[pageNumber];
            assert (page != null);
            return page.getBaseOffset() + offsetInPage;
        }
    }
Get the offset associated with an address encoded by
{@link TaskMemoryManager#encodePageNumberAndOffset(MemoryBlock, long)}
indexr-query-opt/src/main/java/org/apache/spark/memory/TaskMemoryManager.java