When streaming from index, server memory usage grows indefinitely. On a large enough data, the usage grows until the client fails with the exception below [1] (some formatting and cleanup by me). Also, note the typo strem instead of stream.
Synthetic reproduction code is provided below ([2]).
Output of /admin/debug/memory/stats from before the processing is in [3], after processing ("breakpoint here" in the code) in [4].
Reproduced on 4.0.4-nightly-20180525-0400.
[1] Exception when processing large production database
Unhandled Exception: System.AggregateException: One or more errors occurred.
---> System.InvalidOperationException: Invalid JSON. Last 4KB of read strem : 'nContext.ReadObjectInternal(Object builder, String documentId, UsageMode mode, IBlittableDocumentModifier modifier) in C:\Builds\RavenDB-4.0-Nightly\src\Sparrow\Json\JsonOperationContext.cs:line 568
at Raven.Server.Documents.Queries.Results.QueryResultRetrieverBase.ReturnProjection(DynamicJsonValue result, Document doc, Single score, JsonOperationContext context) in C:\Builds\RavenDB-4.0-Nightly\src\Raven.Server\Documents\Queries\Results\QueryResultRetrieverBase.cs:line 222
at Raven.Server.Documents.Queries.Results.QueryResultRetrieverBase.GetProjection(Document input, Single score, String lowerId, IState state) in C:\Builds\RavenDB-4.0-Nightly\src\Raven.Server\Documents\Queries\Results\QueryResultRetrieverBase.cs:line 146
at Raven.Server.Documents.Queries.Results.MapReduceQueryResultRetriever.Get(Document input, Single score, IState state) in C:\Builds\RavenDB-4.0-Nightly\src\Raven.Server\Documents\Queries\Results\MapReduceQueryResultRetriever.cs:line 45
at Raven.Server.Documents.Indexes.Persistence.Lucene.IndexReadOperation.<Query>d__11.MoveNext() in C:\Builds\RavenDB-4.0-Nightly\src\Raven.Server\Documents\Indexes\Persistence\Lucene\IndexReadOperation.cs:line 117
at Raven.Server.Documents.Indexes.Index.<QueryInternal>d__152`1.MoveNext() in C:\Builds\RavenDB-4.0-Nightly\src\Raven.Server\Documents\Indexes\Index.cs:line 2027"{"Url":"/databases/data-prod/streams/queries","Type":"Sparrow.LowMemory.EarlyOutOfMemoryException","Message":"The amount of available memory to commit on the system is low. Commit charge: 36.1 GBytes / 38 GBytes. Memory: 31.703 GBytes / 32 GBytes","Error":"Sparrow.LowMemory.EarlyOutOfMemoryException: The amount of available memory to commiton the system is low. Commit charge: 36.1 GBytes / 38 GBytes. Memory: 31.703 GBytes / 32 GBytes
at Raven.Server.Documents.Queries.StreamDocumentQueryResult.HandleException(Exception e) in C:\Builds\RavenDB-4.0-Nightly\src\Raven.Server\Documents\Queries\StreamDocumentQueryResult.cs:line 41
at Raven.Server.Documents.Indexes.Index.<QueryInternal>d__152`1.MoveNext() in C:\Builds\RavenDB-4.0-Nightly\src\Raven.Server\Documents\Indexes\Index.cs:line 2040
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Raven.Server.Documents.Indexes.Index.<StreamQuery>d__150.MoveNext() in C:\Builds\RavenDB-4.0-Nightly\src\Raven.Server\Documents\Indexes\Index.cs:line 1904
--- End of stack trace from previous location whereexception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Raven.Server.Documents.Handlers.StreamingHandler.<StreamQueryPost>d__3.MoveNext() in C:\Builds\RavenDB-4.0-Nightly\src\Raven.Server\Documents\Handlers\StreamingHandler.cs:line 131
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Raven.Server.Routing.RequestRouter.<HandlePath>d__7.MoveNext() in C:\Builds\RavenDB-4.0-Nightly\src\Raven.Server\Routing\RequestRouter.cs:line 105
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo. Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at System.Runtime.CompilerServices.ValueTaskAwaiter`1.GetResult()
at Raven.Server.RavenServerStartup.<RequestHandler>d__11.MoveNext() in C:\Builds\RavenDB-4.0-Nightly\src\Raven.Server\RavenServerStartup.cs:line 160"}'
at Sparrow.Json.Parsing.UnmanagedJsonParserHelper.ThrowInvalidJson(PeepingTomStream peepingTomStream)
at Raven.Client.Documents.Session.Operations.StreamOperation.YieldStreamResults.<MoveNextAsync>d__13.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Raven.Client.Documents.Session.AsyncDocumentSession.YieldStream`1.<MoveNextAsync>d__12.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at [my code]
[2] Reproduction code
using Raven.Client.Documents;
using Raven.Client.Documents.Indexes;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace RavenDB4Tests.Tryouts
{
public static class StreamingMemory
{
public static async Task StreamingMemoryTest()
{
var rng = new Random();
using (var store = new DocumentStore
{
Urls = new[] { "http://localhost:8080" },
Database = "StreamingMemoryTest"
}.Initialize())
{
new DocsIndex().Execute(store);
if (await ShouldInitData(store))
{
await InitializeData(store);
}
using (var session = store.OpenAsyncSession())
{
Console.WriteLine("Creating stream.");
var query = session.Query<Doc, DocsIndex>();
var stream = await session.Advanced.StreamAsync(query);
while (await stream.MoveNextAsync())
{
var doc = stream.Current.Document;
if (doc.Id.EndsWith("000"))
{
Console.WriteLine($"Processing {doc.Id}");
}
if (doc.Id == "doc/500000")
{
// breakpoint here
}
session.Advanced.Evict(doc);
}
Console.WriteLine("Finished processing.");
}
}
}
private static async Task<bool> ShouldInitData(IDocumentStore store)
{
using (var session = store.OpenAsyncSession())
{
var doc = await session.LoadAsync<Doc>("doc/1");
return doc == null;
}
}
private static async Task InitializeData(IDocumentStore store)
{
var start = 0;
var batches = 50;
Console.WriteLine("Generating data.");
var rng = new Random();
for (int batchNo = start; batchNo < start + batches; batchNo++)
{
Console.WriteLine($"{DateTime.Now.ToLongTimeString()}: Generating batch {batchNo + 1}/{batches}");
using (var session = store.OpenAsyncSession())
{
for (int i = 1; i <= 10000; i++)
{
await session.StoreAsync(new Doc { Id = "doc/" + (batchNo * 10000 + i), IntVal = i, IntVals = Enumerable.Range(1, 50).ToDictionary(x => x.ToString(), _ => rng.Next()) });
}
await session.SaveChangesAsync();
}
}
Console.WriteLine("Data generated.");
}
public class Doc
{
public string Id { get; set; }
public int IntVal { get; set; }
public Dictionary<string, int> IntVals { get; set; }
}
public class DocsIndex : AbstractIndexCreationTask<Doc>
{
public DocsIndex()
{
Map = docs =>
from doc in docs
select new
{
doc.Id,
doc.IntVal,
doc.IntVals,
};
Reduce = results =>
from result in results
group result by result.Id
into g
let doc = g.First()
select new
{
Id = g.Key,
doc.IntVal,
doc.IntVals,
};
}
}
}
}
[3] /admin/debug/memory/stats output before processing
{
"WorkingSet": 1569935360,
"TotalUnmanagedAllocations": 2687752,
"ManagedAllocations": 21806736,
"PhysicalMem": "15,91 GBytes",
"FreeMem": "7,31 GBytes",
"HighMemLastOneMinute": "8,76 GBytes",
"LowMemLastOneMinute": "6,28 GBytes",
"HighMemLastFiveMinute": "8,76 GBytes",
"LowMemLastFiveMinute": "6,28 GBytes",
"HighMemSinceStartup": "8,76 GBytes",
"LowMemSinceStartup": "6,28 GBytes",
"Humane": {
"WorkingSet": "1,46 GBytes",
"TotalUnmanagedAllocations": "2,56 MBytes",
"ManagedAllocations": "20,8 MBytes",
"TotalMemoryMapped": "3,02 GBytes"
},
"Threads": [
{
"Name": "Unknown",
"Allocations": 2687752,
"HumaneAllocations": "2,56 MBytes",
"Ids": [
{
"Id": 6164,
"ManagedThreadId": 1,
"Allocations": 983234,
"HumaneAllocations": "960,19 KBytes"
},
{
"Id": 6344,
"ManagedThreadId": 13,
"Allocations": 885124,
"HumaneAllocations": "864,38 KBytes"
},
{
"Id": 9288,
"ManagedThreadId": 10,
"Allocations": 311490,
"HumaneAllocations": "304,19 KBytes"
},
{
"Id": 19028,
"ManagedThreadId": 17,
"Allocations": 229376,
"HumaneAllocations": "224 KBytes"
},
{
"Id": 8660,
"ManagedThreadId": 9,
"Allocations": 180224,
"HumaneAllocations": "176 KBytes"
},
{
"Id": 8944,
"ManagedThreadId": 4,
"Allocations": 98304,
"HumaneAllocations": "96 KBytes"
},
{
"Id": 6448,
"ManagedThreadId": 18,
"Allocations": 0,
"HumaneAllocations": "0 Bytes"
}
]
},
{
"Name": "'StreamingMemoryTest' Transaction Merging Thread",
"Allocations": 0,
"HumaneAllocations": "0 Bytes",
"Id": 1332,
"ManagedThreadId": 20
},
{
"Name": "Consensus Leader - A in term 3",
"Allocations": 0,
"HumaneAllocations": "0 Bytes",
"Id": 3096,
"ManagedThreadId": 14
},
{
"Name": "RavenDB Tasks Executer",
"Allocations": 0,
"HumaneAllocations": "0 Bytes",
"Id": 18212,
"ManagedThreadId": 12
},
{
"Name": "Voron Global Flushing Thread",
"Allocations": 0,
"HumaneAllocations": "0 Bytes",
"Id": 10600,
"ManagedThreadId": 11
},
{
"Name": "Low memory notification thread",
"Allocations": 0,
"HumaneAllocations": "0 Bytes",
"Id": 18876,
"ManagedThreadId": 7
},
{
"Name": "Logging Thread",
"Allocations": 0,
"HumaneAllocations": "0 Bytes",
"Id": 14604,
"ManagedThreadId": 5
}
],
"Mappings": [
{
"Directory": "\\Databases\\StreamingMemoryTest\\Indexes\\DocsIndex",
"HumaneTotalDirectorySize": "2 GBytes",
"Details": {
"Raven.voron": {
"HumaneFileSize": "2 GBytes",
"HumaneTotalMapped": "2 GBytes",
"Mappings": [
{
"Count": 1
}
]
}
}
},
{
"Directory": "\\Databases\\StreamingMemoryTest",
"TotalDirectorySize": 1073741824,
"HumaneTotalDirectorySize": "1 024 MBytes",
"Details": {
"Raven.voron": {
"FileSize": 1073741824,
"HumaneFileSize": "1 024 MBytes",
"TotalMapped": 1073741824,
"HumaneTotalMapped": "1 024 MBytes",
"Mappings": [
{
"Size": 1073741824,
"Count": 1
}
]
}
}
},
{
"Directory": "\\System",
"TotalDirectorySize": 16777216,
"HumaneTotalDirectorySize": "16 MBytes",
"Details": {
"Raven.voron": {
"FileSize": 16777216,
"HumaneFileSize": "16 MBytes",
"TotalMapped": 16777216,
"HumaneTotalMapped": "16 MBytes",
"Mappings": [
{
"Size": 16777216,
"Count": 1
}
]
}
}
},
{
"Directory": "\\Databases\\StreamingMemoryTest\\Configuration",
"TotalDirectorySize": 8388608,
"HumaneTotalDirectorySize": "8 MBytes",
"Details": {
"Raven.voron": {
"FileSize": 8388608,
"HumaneFileSize": "8 MBytes",
"TotalMapped": 8388608,
"HumaneTotalMapped": "8 MBytes",
"Mappings": [
{
"Size": 8388608,
"Count": 1
}
]
}
}
},
{
"Directory": "\\System\\Temp",
"TotalDirectorySize": 196608,
"HumaneTotalDirectorySize": "192 KBytes",
"Details": {
"compression.0000000000.buffers": {
"FileSize": 65536,
"HumaneFileSize": "64 KBytes",
"TotalMapped": 65536,
"HumaneTotalMapped": "64 KBytes",
"Mappings": [
{
"Size": 65536,
"Count": 1
}
]
},
"scratch.0000000000.buffers": {
"FileSize": 131072,
"HumaneFileSize": "128 KBytes",
"TotalMapped": 131072,
"HumaneTotalMapped": "128 KBytes",
"Mappings": [
{
"Size": 131072,
"Count": 1
}
]
}
}
},
{
"Directory": "\\Databases\\StreamingMemoryTest\\Indexes\\DocsIndex\\Temp",
"TotalDirectorySize": 131072,
"HumaneTotalDirectorySize": "128 KBytes",
"Details": {
"compression.0000000000.buffers": {
"FileSize": 65536,
"HumaneFileSize": "64 KBytes",
"TotalMapped": 65536,
"HumaneTotalMapped": "64 KBytes",
"Mappings": [
{
"Size": 65536,
"Count": 1
}
]
},
"scratch.0000000000.buffers": {
"FileSize": 65536,
"HumaneFileSize": "64 KBytes",
"TotalMapped": 65536,
"HumaneTotalMapped": "64 KBytes",
"Mappings": [
{
"Size": 65536,
"Count": 1
}
]
}
}
},
{
"Directory": "\\Databases\\StreamingMemoryTest\\Configuration\\Temp",
"TotalDirectorySize": 131072,
"HumaneTotalDirectorySize": "128 KBytes",
"Details": {
"compression.0000000000.buffers": {
"FileSize": 65536,
"HumaneFileSize": "64 KBytes",
"TotalMapped": 65536,
"HumaneTotalMapped": "64 KBytes",
"Mappings": [
{
"Size": 65536,
"Count": 1
}
]
},
"scratch.0000000000.buffers": {
"FileSize": 65536,
"HumaneFileSize": "64 KBytes",
"TotalMapped": 65536,
"HumaneTotalMapped": "64 KBytes",
"Mappings": [
{
"Size": 65536,
"Count": 1
}
]
}
}
},
{
"Directory": "\\Databases\\StreamingMemoryTest\\Temp",
"TotalDirectorySize": 131072,
"HumaneTotalDirectorySize": "128 KBytes",
"Details": {
"compression.0000000000.buffers": {
"FileSize": 65536,
"HumaneFileSize": "64 KBytes",
"TotalMapped": 65536,
"HumaneTotalMapped": "64 KBytes",
"Mappings": [
{
"Size": 65536,
"Count": 1
}
]
},
"scratch.0000000000.buffers": {
"FileSize": 65536,
"HumaneFileSize": "64 KBytes",
"TotalMapped": 65536,
"HumaneTotalMapped": "64 KBytes",
"Mappings": [
{
"Size": 65536,
"Count": 1
}
]
}
}
}
]
}
[4] /admin/debug/memory/stats output before processing finish
{
"TotalUnmanagedAllocations": 5128968,
"ManagedAllocations": 552524464,
"PhysicalMem": "15,91 GBytes",
"FreeMem": "5,95 GBytes",
"HighMemLastOneMinute": "6,56 GBytes",
"LowMemLastOneMinute": "5,93 GBytes",
"HighMemLastFiveMinute": "8,76 GBytes",
"LowMemLastFiveMinute": "5,93 GBytes",
"HighMemSinceStartup": "8,76 GBytes",
"LowMemSinceStartup": "5,93 GBytes",
"Humane": {
"WorkingSet": "2,52 GBytes",
"TotalUnmanagedAllocations": "4,89 MBytes",
"ManagedAllocations": "526,93 MBytes",
"TotalMemoryMapped": "3,02 GBytes"
},
"Threads": [
{
"Name": "Unknown",
"Allocations": 5128968,
"HumaneAllocations": "4,89 MBytes",
"Ids": [
{
"Id": 6344,
"ManagedThreadId": 13,
"Allocations": 1311108,
"HumaneAllocations": "1,25 MBytes"
},
{
"Id": 6164,
"ManagedThreadId": 1,
"Allocations": 835778,
"HumaneAllocations": "816,19 KBytes"
},
{
"Id": 10632,
"ManagedThreadId": 25,
"Allocations": 557056,
"HumaneAllocations": "544 KBytes"
},
{
"Id": 9288,
"ManagedThreadId": 10,
"Allocations": 426178,
"HumaneAllocations": "416,19 KBytes"
},
{
"Id": 19028,
"ManagedThreadId": 17,
"Allocations": 360448,
"HumaneAllocations": "352 KBytes"
},
{
"Id": 16460,
"ManagedThreadId": 23,
"Allocations": 344064,
"HumaneAllocations": "336 KBytes"
},
{
"Id": 8660,
"ManagedThreadId": 9,
"Allocations": 311296,
"HumaneAllocations": "304 KBytes"
},
{
"Id": 6448,
"ManagedThreadId": 18,
"Allocations": 278528,
"HumaneAllocations": "272 KBytes"
},
{
"Id": 17076,
"ManagedThreadId": 22,
"Allocations": 180224,
"HumaneAllocations": "176 KBytes"
},
{
"Id": 20088,
"ManagedThreadId": 27,
"Allocations": 131072,
"HumaneAllocations": "128 KBytes"
},
{
"Id": 17624,
"ManagedThreadId": 24,
"Allocations": 131072,
"HumaneAllocations": "128 KBytes"
},
{
"Id": 18552,
"ManagedThreadId": 28,
"Allocations": 131072,
"HumaneAllocations": "128 KBytes"
},
{
"Id": 20416,
"ManagedThreadId": 26,
"Allocations": 131072,
"HumaneAllocations": "128 KBytes"
}
]
},
{
"Name": "Indexing of DocsIndex of StreamingMemoryTest",
"Allocations": 0,
"HumaneAllocations": "0 Bytes",
"Id": 9644,
"ManagedThreadId": 34
},
{
"Name": "'StreamingMemoryTest' Transaction Merging Thread",
"Allocations": 0,
"HumaneAllocations": "0 Bytes",
"Id": 1332,
"ManagedThreadId": 20
},
{
"Name": "Consensus Leader - A in term 3",
"Allocations": 0,
"HumaneAllocations": "0 Bytes",
"Id": 3096,
"ManagedThreadId": 14
},
{
"Name": "RavenDB Tasks Executer",
"Allocations": 0,
"HumaneAllocations": "0 Bytes",
"Id": 18212,
"ManagedThreadId": 12
},
{
"Name": "Voron Global Flushing Thread",
"Allocations": 0,
"HumaneAllocations": "0 Bytes",
"Id": 10600,
"ManagedThreadId": 11
},
{
"Name": "Low memory notification thread",
"Allocations": 0,
"HumaneAllocations": "0 Bytes",
"Id": 18876,
"ManagedThreadId": 7
}
],
"Mappings": [
{
"Directory": "\\Databases\\StreamingMemoryTest\\Indexes\\DocsIndex",
"HumaneTotalDirectorySize": "2 GBytes",
"Details": {
"Raven.voron": {
"HumaneFileSize": "2 GBytes",
"HumaneTotalMapped": "2 GBytes",
"Mappings": [
{
"Count": 1
}
]
}
}
},
{
"Directory": "\\Databases\\StreamingMemoryTest",
"TotalDirectorySize": 1073741824,
"HumaneTotalDirectorySize": "1 024 MBytes",
"Details": {
"Raven.voron": {
"FileSize": 1073741824,
"HumaneFileSize": "1 024 MBytes",
"TotalMapped": 1073741824,
"HumaneTotalMapped": "1 024 MBytes",
"Mappings": [
{
"Size": 1073741824,
"Count": 1
}
]
}
}
},
{
"Directory": "\\System",
"TotalDirectorySize": 16777216,
"HumaneTotalDirectorySize": "16 MBytes",
"Details": {
"Raven.voron": {
"FileSize": 16777216,
"HumaneFileSize": "16 MBytes",
"TotalMapped": 16777216,
"HumaneTotalMapped": "16 MBytes",
"Mappings": [
{
"Size": 16777216,
"Count": 1
}
]
}
}
},
{
"Directory": "\\Databases\\StreamingMemoryTest\\Configuration",
"TotalDirectorySize": 8388608,
"HumaneTotalDirectorySize": "8 MBytes",
"Details": {
"Raven.voron": {
"FileSize": 8388608,
"HumaneFileSize": "8 MBytes",
"TotalMapped": 8388608,
"HumaneTotalMapped": "8 MBytes",
"Mappings": [
{
"Size": 8388608,
"Count": 1
}
]
}
}
},
{
"Directory": "\\System\\Temp",
"TotalDirectorySize": 327680,
"HumaneTotalDirectorySize": "320 KBytes",
"Details": {
"compression.0000000000.buffers": {
"FileSize": 65536,
"HumaneFileSize": "64 KBytes",
"TotalMapped": 65536,
"HumaneTotalMapped": "64 KBytes",
"Mappings": [
{
"Size": 65536,
"Count": 1
}
]
},
"scratch.0000000000.buffers": {
"FileSize": 262144,
"HumaneFileSize": "256 KBytes",
"TotalMapped": 262144,
"HumaneTotalMapped": "256 KBytes",
"Mappings": [
{
"Size": 262144,
"Count": 1
}
]
}
}
},
{
"Directory": "\\Databases\\StreamingMemoryTest\\Indexes\\DocsIndex\\Temp",
"TotalDirectorySize": 131072,
"HumaneTotalDirectorySize": "128 KBytes",
"Details": {
"compression.0000000000.buffers": {
"FileSize": 65536,
"HumaneFileSize": "64 KBytes",
"TotalMapped": 65536,
"HumaneTotalMapped": "64 KBytes",
"Mappings": [
{
"Size": 65536,
"Count": 1
}
]
},
"scratch.0000000000.buffers": {
"FileSize": 65536,
"HumaneFileSize": "64 KBytes",
"TotalMapped": 65536,
"HumaneTotalMapped": "64 KBytes",
"Mappings": [
{
"Size": 65536,
"Count": 1
}
]
}
}
},
{
"Directory": "\\Databases\\StreamingMemoryTest\\Configuration\\Temp",
"TotalDirectorySize": 131072,
"HumaneTotalDirectorySize": "128 KBytes",
"Details": {
"compression.0000000000.buffers": {
"FileSize": 65536,
"HumaneFileSize": "64 KBytes",
"TotalMapped": 65536,
"HumaneTotalMapped": "64 KBytes",
"Mappings": [
{
"Size": 65536,
"Count": 1
}
]
},
"scratch.0000000000.buffers": {
"FileSize": 65536,
"HumaneFileSize": "64 KBytes",
"TotalMapped": 65536,
"HumaneTotalMapped": "64 KBytes",
"Mappings": [
{
"Size": 65536,
"Count": 1
}
]
}
}
},
{
"Directory": "\\Databases\\StreamingMemoryTest\\Temp",
"TotalDirectorySize": 131072,
"HumaneTotalDirectorySize": "128 KBytes",
"Details": {
"compression.0000000000.buffers": {
"FileSize": 65536,
"HumaneFileSize": "64 KBytes",
"TotalMapped": 65536,
"HumaneTotalMapped": "64 KBytes",
"Mappings": [
{
"Size": 65536,
"Count": 1
}
]
},
"scratch.0000000000.buffers": {
"FileSize": 65536,
"HumaneFileSize": "64 KBytes",
"TotalMapped": 65536,
"HumaneTotalMapped": "64 KBytes",
"Mappings": [
{
"Size": 65536,
"Count": 1
}
]
}
}
}
]
}