mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
builtin: heap memory usage api (#18103)
This commit is contained in:
parent
40a97aed1a
commit
5008515b03
|
@ -643,6 +643,36 @@ pub fn memdup_uncollectable(src voidptr, sz int) voidptr {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub struct GCHeapUsage {
|
||||||
|
pub:
|
||||||
|
heap_size usize
|
||||||
|
free_bytes usize
|
||||||
|
total_bytes usize
|
||||||
|
unmapped_bytes usize
|
||||||
|
bytes_since_gc usize
|
||||||
|
}
|
||||||
|
|
||||||
|
// gc_heap_usage returns the info about heap usage
|
||||||
|
pub fn gc_heap_usage() GCHeapUsage {
|
||||||
|
$if gcboehm ? {
|
||||||
|
mut res := GCHeapUsage{}
|
||||||
|
C.GC_get_heap_usage_safe(&res.heap_size, &res.free_bytes, &res.unmapped_bytes,
|
||||||
|
&res.bytes_since_gc, &res.total_bytes)
|
||||||
|
return res
|
||||||
|
} $else {
|
||||||
|
return GCHeapUsage{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// gc_memory_use returns the total memory use in bytes by all allocated blocks
|
||||||
|
pub fn gc_memory_use() usize {
|
||||||
|
$if gcboehm ? {
|
||||||
|
return C.GC_get_memory_use()
|
||||||
|
} $else {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[inline]
|
[inline]
|
||||||
fn v_fixed_index(i int, len int) int {
|
fn v_fixed_index(i int, len int) int {
|
||||||
$if !no_bounds_checking {
|
$if !no_bounds_checking {
|
||||||
|
|
|
@ -132,3 +132,6 @@ pub fn gc_check_leaks() {
|
||||||
C.GC_gcollect()
|
C.GC_gcollect()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn C.GC_get_heap_usage_safe(pheap_size &usize, pfree_bytes &usize, punmapped_bytes &usize, pbytes_since_gc &usize, ptotal_bytes &usize)
|
||||||
|
fn C.GC_get_memory_use() usize
|
||||||
|
|
|
@ -14,6 +14,10 @@ fn C.GC_REALLOC(ptr voidptr, n usize) voidptr
|
||||||
|
|
||||||
fn C.GC_FREE(ptr voidptr)
|
fn C.GC_FREE(ptr voidptr)
|
||||||
|
|
||||||
|
fn C.GC_get_heap_usage_safe(pheap_size &usize, pfree_bytes &usize, punmapped_bytes &usize, pbytes_since_gc &usize, ptotal_bytes &usize)
|
||||||
|
|
||||||
|
fn C.GC_get_memory_use() usize
|
||||||
|
|
||||||
// provide an empty function when manual memory management is used
|
// provide an empty function when manual memory management is used
|
||||||
// to simplify leak detection
|
// to simplify leak detection
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in New Issue
Block a user