my( $avail, $total )= MemoryStatus( "MB",
"AvailPageFile", "TotalPageFile" );
####
my( $avail, $total )= MemoryStatus( "MB",
[ "AvailPageFile", "TotalPageFile" ] );
##
##
my $hMem= MemoryStatus( "K" );
my $load= $hMem->{MemoryLoad};
##
##
perl -de 0
DB<1> use Win32::MemoryInfo "MemoryStatus"
DB<2> x MemoryStatus()
0 HASH(0x1df2628)
'AvailPageFile' => 3026
'TotalPageFile' => 32768
[...]
##
##
my @fieldNames=
qw( MemoryLoad TotalPhys AvailPhys TotalPageFile
AvailPageFile TotalVirtual AvailVirtual );
my %unitSize= ( B=>1, K=>1024, M=>1024*1024, G=>1024*1024*1024 );
#[...]
my( $sUnits )= "B";
if( @_ && $_[0] =~ /^[BKMG]B?$/i ) {
$sUnits= uc substr(shift(@_),0,1);
}
my( $nUnits )= $unitSize{$sUnits};
my( $dwMSLength )= 0;
my( @fieldValues )= (0)x@fieldNames;
my $MEMORYSTATUS= pack "L8", $dwMSLength, @fieldValues;
$GlobalMemoryStatus->Call($MEMORYSTATUS);
( $dwMSLength, @fieldValues )=
unpack "L8", $MEMORYSTATUS;
return if 0 == $dwMSLength;
for( @fieldValues ) {
$_ /= $nUnits;
}
my $hFields= {};
@$hFields{@fieldNames}= @fieldValues;
return @_ ? @$hFields{@_} : $hFields;