关于JAVA性能评价作业的一些想法与操作思路

作业目标

作业目标:-Xmx和-Xms的应保持怎样关系,让系统性能尽可能好。
目的是为了提高系统运行的效率,可以从运行速度和内存占用两个方面出发考虑。

运行速度

在java中得到某一段代码的运行时间有许多方法,这里简单给出1种。

System.currentTimeMillis方法

该方法为java内置方法,可以利用这个方法统计代码的运行时间(单位为毫秒),以下给出实例代码:

public class Main
{
	public static void main(String[] args)
	{
		long startTime = System.currentTimeMillis();
		//执行代码部分
		long endTime = System.currentTimeMillis();
		System.out.printf("执行花费时间:%d ms.", (endTime - startTime));
	}
}

通过这个方法可以获取某段代码的运行时间,这在后面评估运行效率可能会有用处。

内存占用

Runtime类

需要利用Runtime类下的静态方法:

  • Runtime.getRuntime().maxMemory() 可以取得这个java程序的最大内存
  • Runtime.getRuntime().freeMemory() 可以取得这个java程序的空余内存
  • Runtime.getRuntime().totalMemory() 可以取得这个java程序的当前占用总内存

这三个方法返回的都是占用内存的字节(Byte),可以用运算符换算成常用的其他单位再输出显示。例如:

...
//进行了一些运算或存储后
System.out.println("MaxMemory" + Runtime.getRuntime().maxMemory() / 1024 / 1024 + "MB");
System.out.println("FreeMemory" + Runtime.getRuntime().freeMemory() / 1024 / 1024 + "MB");
System.out.println("TotalMemory" + Runtime.getRuntime().totalMemory() / 1024 / 1024 + "MB");

就会输出当前程序的内存占用

优化

优化的思路如前文所说,在主要的代码部分加上上面的方法来获取这段代码运行的速度以及内存占用。然后在进行优化后再次获取,以此评估本次优化的成果

1、初步降低内存占用

在本次作业中,选用的程序是自己写的计算器小程序
在这里插入图片描述
功能是计算两个文本框内的整数。
优化的第一步就是先降低数据类型占用的内存.
例如储存除法输出结果的数据类型就是double,显然可以直接换成float类型。这样虽然会损失部分精度,但是考虑到这次作业的急迫性以及这个程序的用途,没有必要使用double如此高的精度,就可以换成float以此节约内存。以此类推其他的数据类型也可以改变以降低内存占用。以及程序内的数组也可考虑换成可变数组以此灵活存取内存。

第二步就是内存方面的优化,首先使用前文提及的Runtime类下的方法测试默认状态下的程序运行所占用的内存。
在IDEA调试运行的条件下
在这里插入图片描述
最大内存如图所示。在进行了几次计算器能承受的最大范围数值的计算之后,平均的内存占用在254MB左右。
我将java程序构建成jar,在控制台窗口打开到jar文件的路径,中用java -jar -Xmx300M A.jar启动程序。在这里插入图片描述
随后弹出了程序界面,使用一下程序的功能
在这里插入图片描述
控制台中弹出了相应内存占用在这里插入图片描述
最大内存设置成功了。这样就能回答ppt中的问题:

-Xmx和-Xms的应保持怎样关系,让系统性能尽可能好。

即在运行过程中不断测试以取得程序的最大内存占用量,以此获得最佳的-Xmx和-Xms参数大小。

关于控制台窗口的使用:百度百科

邪道优化法

在程序运行之初想办法添加一些冗长的数组或变量,最后在“优化掉”它们同样可以实现“优化”的效果

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值