`

java 代码时间和内存测试

    博客分类:
  • java
阅读更多
// 测试用了多少内存
import java.util.ArrayList;
import java.util.List;

public class MemoryTest {
	public static long used() {
		long total = Runtime.getRuntime().totalMemory();
		long free = Runtime.getRuntime().freeMemory();
		return (total - free);
	}

	public static void main(String[] args) {
		long start = used();
        List<String> list = new ArrayList<String>();
        int total = 10000;
        while (total > 0) {
        	total--;
			list.add(new String());
		}
        long end = used();
        System.out.println("memory increased by "+(end-start)+"bytes");
	}
}


// 测试执行时间,这个大家都知道
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class TimeTest {
    
	public static void main(String[] args) {
		List<String> arrayList = new ArrayList<String>();
		int total1 = 1000000;
		long start = System.currentTimeMillis();
		while (total1 > 0) {
			total1--;
			arrayList.add("testArrayList");
		}
		long end = System.currentTimeMillis();
		System.out.println("arrayList took " + (end - start) + " Millisecond");
		
		List<String> linkedList = new LinkedList<String>();
		int total2 = 1000000;
		long start2 = System.currentTimeMillis();
		while (total2 > 0) {
			total2--;
			linkedList.add("testLinkedList");
		}
		long end2 = System.currentTimeMillis();
		System.out.println("linkendList took " + (end2 - start2) + " Millisecond");
	}
}



// 运用aop计算程序执行时间
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class TimeTest {
	public static void main(String[] args) {
		try {
			Foo foo = (Foo) Handler.newInstance(new FooImpl());
			foo.testArrayList();
			foo.testLinkedList();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
}

class Handler implements InvocationHandler {
	
    Object obj;
	
    private Handler(Object object) {
		this.obj = object;
	}
    
	public static Object newInstance(Object obj) {
		return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj
				.getClass().getInterfaces(), new Handler(obj));
	}
    
	@Override
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		Object result;
		try {
			System.out.print("begin method :" + method.getName() + "(");
			for (int i = 0; args != null && i < args.length; i++) {
				if (i > 0) {
					System.out.print(",");
				}
				System.out.print(" " + args[i].toString());
			}
			System.out.println(" )");
			long start = System.currentTimeMillis();
			result = method.invoke(obj, args);
			long end = System.currentTimeMillis();
			System.out.println("the method " + method.getName() + " lasts "
					+ (end - start) + "ms");
		} catch (InvocationTargetException e) {
			throw e.getTargetException();
		} catch (Exception e) {
			throw new RuntimeException("unexpected invocation exception: "
					+ e.getMessage());
		} finally {
			System.out.println("end method :" + method.getName());
		}
		return result;
	}
}

interface Foo {
	public void testArrayList();

	public void testLinkedList();
}

class FooImpl implements Foo {
	private List link = new LinkedList();
	private List array = new ArrayList();

	public FooImpl() {
		for (int i = 0; i < 10000; i++) {
			array.add(new Integer(i));
			link.add(new Integer(i));
		}
	}

	public void testArrayList() {
		for (int i = 0; i < 10000; i++)
			array.get(i);
	}

	public void testLinkedList() {
		for (int i = 0; i < 10000; i++)
			link.get(i);
	}
}

分享到:
评论

相关推荐

    Java虚拟机内存测试和参数调优代码.zip

    java学习:Java虚拟机内存测试和参数调优

    JAVA性能瓶颈和漏洞检测

    JProbe Memory Debugger可帮助开发人员快速查找Java代码的内存泄露和对象循环。内置的图形化实时内存使用和对象视图,有助于开发人员理解应用的内存使用,设法减少内存消耗以提高应用性能。 主要功能: 识别内存...

    JAVA上百实例源码以及开源项目源代码

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    java源码包---java 源码 大量 实例

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    Java开发技术大全(500个源代码).

    代码范例列表 第1章 示例描述:本章演示如何开始使用JDK进行程序的开发。 HelloWorldApp.java 第一个用Java开发的应用程序。 firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载...

    JAVA上百实例源码以及开源项目

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    java源码包2

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    JAVA性能瓶颈和漏洞检测.JProbe.Suite.v7.0.part2

    JProbe Memory Debugger可帮助开发人员快速查找Java代码的内存泄露和对象循环。内置的图形化实时内存使用和对象视图,有助于开发人员理解应用的内存使用,设法减少内存消耗以提高应用性能。 主要功能: 识别内存...

    JAVA性能瓶颈和漏洞检测].JProbe.Suite.v7.0.part1

    JProbe Memory Debugger可帮助开发人员快速查找Java代码的内存泄露和对象循环。内置的图形化实时内存使用和对象视图,有助于开发人员理解应用的内存使用,设法减少内存消耗以提高应用性能。 主要功能: 识别内存...

    java开源包8

    最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...

    Java面试基础测试题及答案

    java解释器负责将java虚拟机的代码在特定的平台上运行 3、GC:不再使用的内存空间应该回收----垃圾收集;在C和C++等语言中,是由程序员自己回收垃圾释放内存的;java语言解除了程序员自己亲自回收内存空间的责任。...

    Java系统中内存泄漏测试方法的研究

    全文通过与C++中的内存泄漏问题进行对比,讲述了Java内存泄漏的基本原理,以及如何借助Optimizeitprofiler工具来测试内存泄漏和分析内存泄漏的原因,在实践中证明这是一套行之有效的方法。问题的提出笔者曾经参与...

    基于java+OpenCV人脸识别+图片相似度检测+源码+开发文档说明+代码解说(毕业设计&课程设计&项目开发)

    基于java+OpenCV人脸识别+图片相似度检测+源码+开发文档说明+代码解说,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 项目简介: 检测任意两张图片的相似度思路 ...

    java开源包10

    最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...

    java源码包4

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    java源码包3

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    java写的一个cpu模拟程序

    java写的一个模拟cpu程序,可以识别汇编程序,支持打印机等外设,界面友好,性能良好,界面是用VE来做的,可以单步执行语句,让你更好地理解cpu内部的工作原理。

    JAVA上百实例源码以及开源项目源代码 java开源包2

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    如何排查Java内存泄漏?看完我给跪了!

    没有经验的程序员经常认为Java的自动垃圾回收完全使他们免于担心内存管理。这是一个常见的误解:虽然垃圾收集器做得很好,但即使是最好的程序员也完全有可能成为严重破坏内存泄漏的牺牲品。让我解释一下。 当不必要...

Global site tag (gtag.js) - Google Analytics