Repository: microsoft/garnet
File: libs/host/Configuration/Options.cs (C#)

Code before:
        [MemorySizeValidation]
        [Option('m', "memory", Required = false, HelpText = "Total log memory used in bytes (rounds down to power of 2)")]
        public string MemorySize { get; set; }

        [MemorySizeValidation]
        [Option('p', "page", Required = false, HelpText = "Size of each page in bytes (rounds down to power of 2)")]
        public string PageSize { get; set; }

        [MemorySizeValidation]
        [Option('s', "segment", Required = false, HelpText = "Size of each log segment in bytes on disk (rounds down to power of 2)")]
        public string SegmentSize { get; set; }

        [MemorySizeValidation]
        [Option('i', "index", Required = false, HelpText = "Size of hash index in bytes (rounds down to power of 2)")]
        public string IndexSize { get; set; }

        [MemorySizeValidation(false)]
        [Option("index-max-size", Required = false, HelpText = "Max size of hash index in bytes (rounds down to power of 2)")]
        public string IndexMaxSize { get; set; }

        [PercentageValidation(false)]
        [Option("mutable-percent", Required = false, HelpText = "Percentage of log memory that is kept mutable")]
        public int MutablePercent { get; set; }

        [MemorySizeValidation(false)]
        [Option("obj-heap-memory", Required = false, HelpText = "Object store heap memory size in bytes")]
        public string ObjectStoreHeapMemorySize { get; set; }

        [MemorySizeValidation]
        [Option("obj-log-memory", Required = false, HelpText = "Object store log memory used in bytes excluding heap memory")]
        public string ObjectStoreLogMemorySize { get; set; }

        [MemorySizeValidation]
        [Option("obj-page", Required = false, HelpText = "Size of each object store page in bytes (rounds down to power of 2)")]
        public string ObjectStorePageSize { get; set; }

        [MemorySizeValidation]
        [Option("obj-segment", Required = false, HelpText = "Size of each object store log segment in bytes on disk (rounds down to power of 2)")]
        public string ObjectStoreSegmentSize { get; set; }

        [MemorySizeValidation]
        [Option("obj-index", Required = false, HelpText = "Size of object store hash index in bytes (rounds down to power of 2)")]
        public string ObjectStoreIndexSize { get; set; }

        [MemorySizeValidation(false)]
        [Option("obj-index-max-size", Required = false, HelpText = "Max size of object store hash index in bytes (rounds down to power of 2)")]
        public string ObjectStoreIndexMaxSize { get; set; }

        [PercentageValidation]
        [Option("obj-mutable-percent", Required = false, HelpText = "Percentage of object store log memory that is kept mutable")]
        public int ObjectStoreMutablePercent { get; set; }

Review comment (suggestion):
explain what heap memory means - "Object store heap memory size (to account for the size taken up by object instances on the heap)"

Code after:
        [MemorySizeValidation]
        [Option('m', "memory", Required = false, HelpText = "Total log memory used in bytes (rounds down to power of 2)")]
        public string MemorySize { get; set; }

        [MemorySizeValidation]
        [Option('p', "page", Required = false, HelpText = "Size of each page in bytes (rounds down to power of 2)")]
        public string PageSize { get; set; }

        [MemorySizeValidation]
        [Option('s', "segment", Required = false, HelpText = "Size of each log segment in bytes on disk (rounds down to power of 2)")]
        public string SegmentSize { get; set; }

        [MemorySizeValidation]
        [Option('i', "index", Required = false, HelpText = "Start size of hash index in bytes (rounds down to power of 2)")]
        public string IndexSize { get; set; }

        [MemorySizeValidation(false)]
        [Option("index-max-size", Required = false, HelpText = "Max size of hash index in bytes (rounds down to power of 2)")]
        public string IndexMaxSize { get; set; }

        [PercentageValidation(false)]
        [Option("mutable-percent", Required = false, HelpText = "Percentage of log memory that is kept mutable")]
        public int MutablePercent { get; set; }

        [MemorySizeValidation(false)]
        [Option("obj-heap-memory", Required = false, HelpText = "Object store heap memory size in bytes (Sum of size taken up by all object instances in the heap)")]
        public string ObjectStoreHeapMemorySize { get; set; }

        [MemorySizeValidation]
        [Option("obj-log-memory", Required = false, HelpText = "Object store log memory used in bytes (Size of only the log with references to heap objects, excludes size of heap memory consumed by the objects themselves referred to from the log)")]
        public string ObjectStoreLogMemorySize { get; set; }

        [MemorySizeValidation]
        [Option("obj-page", Required = false, HelpText = "Size of each object store page in bytes (rounds down to power of 2)")]
        public string ObjectStorePageSize { get; set; }

        [MemorySizeValidation]
        [Option("obj-segment", Required = false, HelpText = "Size of each object store log segment in bytes on disk (rounds down to power of 2)")]
        public string ObjectStoreSegmentSize { get; set; }

        [MemorySizeValidation]
        [Option("obj-index", Required = false, HelpText = "Start size of object store hash index in bytes (rounds down to power of 2)")]
        public string ObjectStoreIndexSize { get; set; }

        [MemorySizeValidation(false)]
        [Option("obj-index-max-size", Required = false, HelpText = "Max size of object store hash index in bytes (rounds down to power of 2)")]
        public string ObjectStoreIndexMaxSize { get; set; }

        [PercentageValidation]
        [Option("obj-mutable-percent", Required = false, HelpText = "Percentage of object store log memory that is kept mutable")]
        public int ObjectStoreMutablePercent { get; set; }