| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- // Copyright (c) Meta Platforms, Inc. and affiliates.
- // This source code is licensed under both the GPLv2 (found in the
- // COPYING file in the root directory) and Apache 2.0 License
- // (found in the LICENSE.Apache file in the root directory).
- #include "db/blob/blob_contents.h"
- #include <cassert>
- #include "cache/cache_entry_roles.h"
- #include "cache/cache_helpers.h"
- #include "port/malloc.h"
- namespace ROCKSDB_NAMESPACE {
- size_t BlobContents::ApproximateMemoryUsage() const {
- size_t usage = 0;
- if (allocation_) {
- MemoryAllocator* const allocator = allocation_.get_deleter().allocator;
- if (allocator) {
- usage += allocator->UsableSize(allocation_.get(), data_.size());
- } else {
- #ifdef ROCKSDB_MALLOC_USABLE_SIZE
- usage += malloc_usable_size(allocation_.get());
- #else
- usage += data_.size();
- #endif
- }
- }
- #ifdef ROCKSDB_MALLOC_USABLE_SIZE
- usage += malloc_usable_size(const_cast<BlobContents*>(this));
- #else
- usage += sizeof(*this);
- #endif
- return usage;
- }
- } // namespace ROCKSDB_NAMESPACE
|