memory 0.8.1 → 0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/memory/format.rb +8 -14
- data/lib/memory/usage.rb +4 -2
- data/lib/memory/version.rb +1 -1
- data/readme.md +8 -0
- data/releases.md +8 -0
- data.tar.gz.sig +0 -0
- metadata +8 -3
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3b83713d537a03a16799ac6f3cde42daad364061ac4baeadaced28a1ebf3206f
|
|
4
|
+
data.tar.gz: cde6c17579def23346ad980303d1d2cb57a7574ca59eec2656ae62ca132ff8d9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c4ded3952cdb38c6f9e0d15e9f98a0da1267da1bd85b9f0810b0d16385fa16246d40925e2ffb58942cd73a20ca7038d1b49d99e6a9b9292d27fe75ec57b0e65e
|
|
7
|
+
data.tar.gz: 16eef76d5864170493759bed3c39aec78a4696b5ccd4ba91d2cc8caad13d0578c89e1d2f37dabc9713b21e9ee0a4f6d6a4fceea233cdfefe32ca3c8185bda4c2
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/lib/memory/format.rb
CHANGED
|
@@ -4,17 +4,7 @@
|
|
|
4
4
|
# Copyright, 2025, by Samuel Williams.
|
|
5
5
|
|
|
6
6
|
module Memory
|
|
7
|
-
UNITS =
|
|
8
|
-
0 => "B",
|
|
9
|
-
3 => "KiB",
|
|
10
|
-
6 => "MiB",
|
|
11
|
-
9 => "GiB",
|
|
12
|
-
12 => "TiB",
|
|
13
|
-
15 => "PiB",
|
|
14
|
-
18 => "EiB",
|
|
15
|
-
21 => "ZiB",
|
|
16
|
-
24 => "YiB"
|
|
17
|
-
}.freeze
|
|
7
|
+
UNITS = ["B", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"].freeze
|
|
18
8
|
|
|
19
9
|
# Format bytes into human-readable units.
|
|
20
10
|
# @parameter bytes [Integer] The number of bytes to format.
|
|
@@ -22,8 +12,12 @@ module Memory
|
|
|
22
12
|
def self.formatted_bytes(bytes)
|
|
23
13
|
return "0 B" if bytes.zero?
|
|
24
14
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
15
|
+
# Calculate how many times we can divide by 1024 (2^10)
|
|
16
|
+
# log2(bytes) / 10 gives the number of 1024 divisions
|
|
17
|
+
index = Math.log2(bytes).to_i / 10
|
|
18
|
+
index = 8 if index > 8 # Cap at YiB
|
|
19
|
+
|
|
20
|
+
# Divide by 1024^index, which equals 2^(index * 10)
|
|
21
|
+
"%.2f #{UNITS[index]}" % (bytes / (1024.0 ** index))
|
|
28
22
|
end
|
|
29
23
|
end
|
data/lib/memory/usage.rb
CHANGED
|
@@ -61,7 +61,9 @@ module Memory
|
|
|
61
61
|
size += ObjectSpace.memsize_of(object)
|
|
62
62
|
|
|
63
63
|
# Add the object's reachable objects to the queue:
|
|
64
|
-
|
|
64
|
+
if reachable_objects = ObjectSpace.reachable_objects_from(object)
|
|
65
|
+
queue.concat(reachable_objects)
|
|
66
|
+
end
|
|
65
67
|
end
|
|
66
68
|
|
|
67
69
|
return new(size, count)
|
|
@@ -79,7 +81,7 @@ module Memory
|
|
|
79
81
|
end
|
|
80
82
|
|
|
81
83
|
def to_s
|
|
82
|
-
"(#{Memory.formatted_bytes(
|
|
84
|
+
"(#{Memory.formatted_bytes(@size)} in #{@count} allocations)"
|
|
83
85
|
end
|
|
84
86
|
end
|
|
85
87
|
end
|
data/lib/memory/version.rb
CHANGED
data/readme.md
CHANGED
|
@@ -94,6 +94,14 @@ end
|
|
|
94
94
|
|
|
95
95
|
Please see the [project releases](https://socketry.github.io/memory/releases/index) for all releases.
|
|
96
96
|
|
|
97
|
+
### v0.8.3
|
|
98
|
+
|
|
99
|
+
- Handle `Memory::Usage.of(number)` without error.
|
|
100
|
+
|
|
101
|
+
### v0.8.2
|
|
102
|
+
|
|
103
|
+
- Fix several formatting issues.
|
|
104
|
+
|
|
97
105
|
### v0.8.1
|
|
98
106
|
|
|
99
107
|
- Skip over `ObjectSpace::InternalObjectWrapper` instances in `Memory::Usage.of` to avoid unbounded recursion.
|
data/releases.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Releases
|
|
2
2
|
|
|
3
|
+
## v0.8.3
|
|
4
|
+
|
|
5
|
+
- Handle `Memory::Usage.of(number)` without error.
|
|
6
|
+
|
|
7
|
+
## v0.8.2
|
|
8
|
+
|
|
9
|
+
- Fix several formatting issues.
|
|
10
|
+
|
|
3
11
|
## v0.8.1
|
|
4
12
|
|
|
5
13
|
- Skip over `ObjectSpace::InternalObjectWrapper` instances in `Memory::Usage.of` to avoid unbounded recursion.
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: memory
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.8.
|
|
4
|
+
version: 0.8.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sam Saffron
|
|
@@ -29,6 +29,7 @@ authors:
|
|
|
29
29
|
- Olle Jonsson
|
|
30
30
|
- Vasily Kolesnikov
|
|
31
31
|
- William Tabi
|
|
32
|
+
autorequire:
|
|
32
33
|
bindir: bin
|
|
33
34
|
cert_chain:
|
|
34
35
|
- |
|
|
@@ -60,7 +61,7 @@ cert_chain:
|
|
|
60
61
|
Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
|
|
61
62
|
voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
|
|
62
63
|
-----END CERTIFICATE-----
|
|
63
|
-
date:
|
|
64
|
+
date: 2025-10-29 00:00:00.000000000 Z
|
|
64
65
|
dependencies:
|
|
65
66
|
- !ruby/object:Gem::Dependency
|
|
66
67
|
name: bake
|
|
@@ -104,6 +105,8 @@ dependencies:
|
|
|
104
105
|
- - ">="
|
|
105
106
|
- !ruby/object:Gem::Version
|
|
106
107
|
version: '0'
|
|
108
|
+
description:
|
|
109
|
+
email:
|
|
107
110
|
executables: []
|
|
108
111
|
extensions: []
|
|
109
112
|
extra_rdoc_files: []
|
|
@@ -130,6 +133,7 @@ licenses:
|
|
|
130
133
|
metadata:
|
|
131
134
|
documentation_uri: https://socketry.github.io/memory/
|
|
132
135
|
source_code_uri: https://github.com/socketry/memory.git
|
|
136
|
+
post_install_message:
|
|
133
137
|
rdoc_options: []
|
|
134
138
|
require_paths:
|
|
135
139
|
- lib
|
|
@@ -144,7 +148,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
144
148
|
- !ruby/object:Gem::Version
|
|
145
149
|
version: '0'
|
|
146
150
|
requirements: []
|
|
147
|
-
rubygems_version: 3.
|
|
151
|
+
rubygems_version: 3.4.19
|
|
152
|
+
signing_key:
|
|
148
153
|
specification_version: 4
|
|
149
154
|
summary: Memory profiling routines for Ruby 2.3+
|
|
150
155
|
test_files: []
|
metadata.gz.sig
CHANGED
|
Binary file
|