summaryrefslogtreecommitdiffstats
path: root/vespajlib/src/main/java/com/yahoo/nativec/MallInfo.java
diff options
context:
space:
mode:
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/nativec/MallInfo.java')
-rw-r--r--vespajlib/src/main/java/com/yahoo/nativec/MallInfo.java28
1 files changed, 26 insertions, 2 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/nativec/MallInfo.java b/vespajlib/src/main/java/com/yahoo/nativec/MallInfo.java
index a4f5486ccf1..eda6c7d1af7 100644
--- a/vespajlib/src/main/java/com/yahoo/nativec/MallInfo.java
+++ b/vespajlib/src/main/java/com/yahoo/nativec/MallInfo.java
@@ -2,7 +2,12 @@ package com.yahoo.nativec;
import com.sun.jna.Structure;
-public class MallInfo {
+/**
+ * Gives access to the information provided by the C library mallinfo() function.
+ *
+ * @author baldersheim
+ */
+public class MallInfo extends NativeHeap {
private final static Throwable initException = NativeC.loadLibrary(MallInfo.class);
public static Throwable init() {
return initException;
@@ -23,8 +28,27 @@ public class MallInfo {
public int keepcost; /* Top-most, releasable space (bytes) */
}
private static native MallInfoStruct.ByValue mallinfo();
+
+ private final MallInfoStruct mallinfo;
public MallInfo() {
mallinfo = mallinfo();
}
- private final MallInfoStruct mallinfo;
+
+ @Override
+ public long usedSize() {
+ long v = mallinfo.uordblks;
+ return v << 20; // Due to too few bits in ancient mallinfo vespamalloc reports in 1M units
+ }
+
+ @Override
+ public long totalSize() {
+ long v = mallinfo.arena;
+ return v << 20; // Due to too few bits in ancient mallinfo vespamalloc reports in 1M units
+ }
+
+ @Override
+ public long availableSize() {
+ long v = mallinfo.fordblks;
+ return v << 20; // Due to too few bits in ancient mallinfo vespamalloc reports in 1M units
+ }
}