Skip to content

Commit

Permalink
chore(mbeans): use own-defined type to replace java.lang.management.M…
Browse files Browse the repository at this point in the history
…emoryUsage
  • Loading branch information
andrewazores committed Feb 28, 2024
1 parent 99b8c63 commit b542838
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 9 deletions.
21 changes: 12 additions & 9 deletions src/main/java/io/cryostat/core/net/MemoryMetrics.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
import org.apache.commons.lang3.builder.ToStringBuilder;

public class MemoryMetrics {
private final MemoryUsage heapMemoryUsage;
private final MemoryUsage nonHeapMemoryUsage;
private final MemoryUtilization heapMemoryUsage;
private final MemoryUtilization nonHeapMemoryUsage;
private final long objectPendingFinalizationCount;
private final long freeHeapMemory;
private final long freeNonHeapMemory;
Expand All @@ -31,12 +31,15 @@ public class MemoryMetrics {

public MemoryMetrics(Map<String, Object> attributes) {
this.heapMemoryUsage =
(MemoryUsage)
attributes.getOrDefault("HeapMemoryUsage", new MemoryUsage(-1, 0, 0, -1));
MemoryUtilization.from(
(MemoryUsage)
attributes.getOrDefault(
"HeapMemoryUsage", new MemoryUsage(-1, 0, 0, -1)));
this.nonHeapMemoryUsage =
(MemoryUsage)
attributes.getOrDefault(
"NonHeapMemoryUsage", new MemoryUsage(-1, 0, 0, -1));
MemoryUtilization.from(
(MemoryUsage)
attributes.getOrDefault(
"NonHeapMemoryUsage", new MemoryUsage(-1, 0, 0, -1)));
this.objectPendingFinalizationCount =
(int) attributes.getOrDefault("ObjectPendingFinalizationCount", Integer.MIN_VALUE);
this.freeHeapMemory = (long) attributes.getOrDefault("FreeHeapMemory", Long.MIN_VALUE);
Expand All @@ -47,11 +50,11 @@ public MemoryMetrics(Map<String, Object> attributes) {
this.verbose = (boolean) attributes.getOrDefault("Verbose", false);
}

public MemoryUsage getHeapMemoryUsage() {
public MemoryUtilization getHeapMemoryUsage() {
return heapMemoryUsage;
}

public MemoryUsage getNonHeapMemoryUsage() {
public MemoryUtilization getNonHeapMemoryUsage() {
return nonHeapMemoryUsage;
}

Expand Down
54 changes: 54 additions & 0 deletions src/main/java/io/cryostat/core/net/MemoryUtilization.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/*
* Copyright The Cryostat Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cryostat.core.net;

import java.lang.management.MemoryUsage;

public class MemoryUtilization {

private final long init;
private final long used;
private final long committed;
private final long max;

public MemoryUtilization(long init, long used, long committed, long max) {
this.init = init;
this.used = used;
this.committed = committed;
this.max = max;
}

public static MemoryUtilization from(MemoryUsage usage) {
return new MemoryUtilization(
usage.getInit(), usage.getUsed(), usage.getCommitted(), usage.getMax());
}

public long getInit() {
return init;
}

public long getUsed() {
return used;
}

public long getCommitted() {
return committed;
}

public long getMax() {
return max;
}
}

0 comments on commit b542838

Please sign in to comment.