请问怎么测试一个java程序占用的内存和cpu消耗

请问怎么测试一个java程序占用的内存和cpu消耗,第1张

只能查看JAVA 虚拟机占用的内存RuntimegetRuntime()maxMemory() 返回 Java 虚拟机试图使用的最大内存量。RuntimegetRuntime()freeMemory() 返回 Java 虚拟机中的空闲内存量。RuntimegetRuntime()totalMemory() 返回 Java 虚拟机中的内存总量。

基本类型变量如果是临时变量,只要定义了,就会分配内存空间,不管是否被赋值;如果是作为对象的属性出现,只要该对象不实例化,就不会分配内存空间。

一个完整的Java程序运行过程会涉及以下内存区域:

1、寄存器:JVM内部虚拟寄存器,存取速度非常快,程序不可控制。

2、

栈:保存局部变量的值,包括:

1)用来保存基本数据类型的值;

2)保存类的实例,即堆区对象的引用(指针)

3)也可以用来保存加载方法时的帧

3、堆:用来存放动态产生的数据,比如new出来的对象。注意创建出来的对象只包含属于各自的成员变量,并不包括成员方法。因为同一个类的对象拥有各自的成员变量,存储在各自的堆中,但是他们共享该类的方法,并不是每创建一个对象就把成员方法复制一次。

4、常量池:JVM为每个已加载的类型维护一个常量池,常量池就是这个类型用到的常量的一个有序集合。包括直接常量(基本类型,String)和对其他类型、方法、字段的符号引用(1)。池中的数据和数组一样通过索引访问。由于常量池包含了一个类型所有的对其他类型、方法、字段的符号引用,所以常量池在Java的动态链接中起了核心作用。常量池存在于堆中。

5、代码段:用来存放从硬盘上读取的源程序代码。

6、数据段:用来存放static定义的静态成员。

注意:

1一个Java文件,只要有main入口方法,我们就认为这是一个Java程序,可以单独编译运行。

2无论是普通类型的变量还是引用类型的变量(俗称实例),都可以作为局部变量,他们都可以出现在栈中。只不过普通类型的变量在栈中直接保存它所对应的值,而引用类型的变量保存的是一个指向堆区的指针,通过这个指针,就可以找到这个实例在堆区对应的对象。因此,普通类型变量只在栈区占用一块内存,而引用类型变量要在栈区和堆区各占一块内存。

首先你要明白一点,不管我们安装什么应用也好,系统也好,软件也好,都必须是安装到一个存储介质上的,也就是硬件上面

你的手机安装java程序,是安装到手机的存储空间上的,一般手机可能自带这个存储空间,也可以安装到sd卡(这个卡通常叫内存卡)上

比如mp3他也是存放到这些存储介质上的,一般存储介质能存放多少内容是根据它的规格来的

假如你手机中有一张8G卡,可以安装java程序,也可以安装mp3等等内容

存放这些数据的单位关系如下:

1024KB=1MB

1024MB=1GB

你问到的MB其实就是指占用了多少内存卡的空间

如果按一首mp3大约5MB来算的话,一张8GB卡可以存放 81024/5=16384 首mp3

以上就是关于请问怎么测试一个java程序占用的内存和cpu消耗全部的内容,包括:请问怎么测试一个java程序占用的内存和cpu消耗、Java程序运行时,没有赋值的基本类型变量会在内存中分配空间吗、手机上java程序占用什么内存等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zz/9525893.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存