浅谈java 内存划分 及 运行时的内存调用顺序

一、java的内存划分为五个部分
1.栈(stack):存放的都是方法中的局部变量。方法的运行一定要在栈当中

局部变量:方法的参数,或者是方法()内部的变量
作用域:一旦超出作用域,立刻从栈内存中消失。

2.堆(Heap):凡是new出来的东西,都在堆当中。

堆内存里面的东西都有一个地址值:16进制(比如0x1231)
堆内存里面的数据都有默认值,规则:
如果是整数 默认为0
如果是浮点数 默认为0.0
如果是字符 默认为‘\u0000’
如果是布尔 默认为false
如果是引用类型 默认为null

3.方法区(method Area):存储.class的相关信息,包含方法的信息
4.本地方法栈(Native Method Stack):与操作系统相关
5.寄存器(pc Register):与CPU相关。

二、一个数组的内存图解

在这里插入图片描述

描述:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
调用一个exe接口,可以使用Java的ProcessBuilder类和Process类。ProcessBuilder类用于创建进程,并提供一些方法来设置进程的环境变量、工作目录、标准输入输出流等。Process类用于控制进程的执行,并提供一些方法来获取进程的状态、输入输出流、运行间等信息。 要分析运行间、内存、CPU占用,可以在Java代码中使用Process类的一些方法来获取这些信息。下面是一些示例代码: 1. 获取运行间 ```java Process process = new ProcessBuilder("path/to/exe").start(); long startTime = System.currentTimeMillis(); process.waitFor(); // 等待进程执行完成 long endTime = System.currentTimeMillis(); long elapsedTime = endTime - startTime; System.out.println("运行间:" + elapsedTime + "毫秒"); ``` 2. 获取内存占用 ```java Process process = new ProcessBuilder("path/to/exe").start(); long memoryUsed = process.totalMemory(); // 获取进程占用的总内存 System.out.println("内存占用:" + memoryUsed + "字节"); ``` 3. 获取CPU占用 ```java Process process = new ProcessBuilder("path/to/exe").start(); long cpuTime = process.info().totalCpuDuration().orElse(0L); // 获取进程占用的总CPU间 System.out.println("CPU占用:" + cpuTime + "纳秒"); ``` 需要注意的是,以上代码只是示例,具体实现可能会受到操作系统、Java虚拟机等因素的影响。在实际使用,需要根据具体情况进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值