啥也不说了直接看代码
import java lang management ManagementFactory;
import sun management OperatingSystemMXBean;
public class Test {
public static void main(String[] args) {
OperatingSystemMXBean o b = (OperatingSystemMXBean) ManagementFactory getOperatingSystemMXBean();
System out println( 系统物理内存总计 + o b getTotalPhysicalMemorySize() / / + MB );
System out println( 系统物理可用内存总计 + o b getFreePhysicalMemorySize() / / + MB );
}
}
ManagementFactory getOperatingSystemMXBean()返回的是java lang management里面的OperatingSystemMXBean
我们要用的是 sun management OperatingSystemMXBean;
在java类库中可以查到
public abstract Interface sun management OperatingSystemMXBean extends java lang management OperatingSystemMXBean
所以我们可以强制转换一下
jdk 下的磁盘使用情况例子:
import java io File;
/
jdk 下的磁盘使用情况例子
/
public class Diskfree {
public static void main(String[] args) {
File[] roots = File listRoots();//获取磁盘分区列表
for (File file : roots) {
System out println(file getPath() + 信息如下: );
System out println( 空闲未使用 = + file getFreeSpace() / / / + G );//空闲空间
System out println( 已经使用 = + file getUsableSpace() / / / + G );//可用空间
System out println( 总容量 = + file getTotalSpace() / / / + G );//总空间
System out println();
}
}
lishixinzhi/Article/program/Java/hx/201311/26599
在shell中,可以通过命令行工具来获取系统的内存使用情况,比如使用free、top、ps等命令,但是这些是手动获取,不能实现定时调度。
定时调度需要使用定时任务工具,比如cron或者at等,这些工具可以在指定的时间点或者时间间隔内自动执行特定的命令或脚本。但是,这些定时任务工具只能帮助你在指定的时间点或间隔内执行命令或脚本,它本身并不能获取系统的内存使用情况。
如果需要实现定时获取系统的内存使用情况,可以编写一个脚本,定时执行这个脚本,然后将结果输出到一个文件中,再通过其他工具来处理这个文件,比如使用awk、sed等命令来提取需要的信息。
需要注意的是,在编写脚本时需要特别注意,因为获取系统的内存使用情况需要特权级别,普通用户无法直接获取,需要使用sudo或者root权限才能获取。同时,定时任务的执行时间需要合理,不能影响系统的正常运行。
写个小程序检测最准确:
获取当前设备可用内存(单位:MB)
- (double)availableMemory
{
vm_statistics_data_t vmStats;
mach_msg_type_number_t infoCount = HOST_VM_INFO_COUNT;
kern_return_t kernReturn
= host_statistics(mach_host_self(),
HOST_VM_INFO,
(host_info_t)&vmStats,
&infoCount);
if(kernReturn != KERN_SUCCESS) {
return NSNotFound;
}
return ((vm_page_size vmStatsfree_count) / 10240) / 10240;
}
获取当前任务所占用的内存(单位:MB)
#include
#include
- (double)usedMemory
{
task_basic_info_data_t taskInfo;
mach_msg_type_number_t infoCount = TASK_BASIC_INFO_COUNT;
kern_return_t kernReturn = task_info(mach_task_self(),
TASK_BASIC_INFO, (task_info_t)&taskInfo, &infoCount);
if(kernReturn != KERN_SUCCESS) {
return NSNotFound;
}
return taskInforesident_size / 10240 / 10240;
}
以上就是关于java获得当前系统内存及硬盘使用情况全部的内容,包括:java获得当前系统内存及硬盘使用情况、shell手动能获取使用内存大小,定时调度不行、xcode 怎么查看当前程序占用多少内存等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)