代码一
Java代码
List list = new ArrayList();
代码二
Java代码
List list = null;
如果有10000个类似于list的对象,代码一比代码二会多占多少内存?
public class TestNullAndNew { /** * @param args * . */ @SuppressWarnings({ "rawtypes", "unused" }) public static void main(String[] args) { long freeMemory = Runtime.getRuntime().freeMemory(); System.out.println("系统空余内存(KB) : " + freeMemory); System.out.println("系统总内存(KB) : " + Runtime.getRuntime().totalMemory()); for (int i = 0; i < 10000; i++) { List list = new ArrayList(); } long freeMemoryNew = Runtime.getRuntime().freeMemory(); System.out.println("使用new之前的空余内存(KB):" + freeMemory); System.out.println("使用new之后的空余内存(KB) : " + freeMemoryNew + "\nnew的内存使用(KB) : " + (freeMemory - freeMemoryNew)); for (int i = 0; i < 10000; i++) { List list = null; } long freeMemoryNull = Runtime.getRuntime().freeMemory(); System.out.println("使用null之前的空余内存(KB):" + freeMemoryNew); System.out.println("使用null之后的空余内存(KB): " + freeMemoryNull + "\nnull的内存使用(KB) : " + (freeMemoryNew - freeMemoryNull)); System.out.println("totalMemory(KB) : " + Runtime.getRuntime().totalMemory()); } }
运行结果:
系统空余内存(KB) : 15940336
系统总内存(KB) : 16252928
使用new之前的空余内存(KB):15940336
使用new之后的空余内存(KB) : 15216704
new的内存使用(KB) : 723632
使用null之前的空余内存(KB):15216704
使用null之后的空余内存(KB): 15216704
null的内存使用(KB) : 0
totalMemory(KB) : 16252928
结论:
List list = null; 不会占用内存。
代码1执行10000次占用24.944M内存。
具体执行结果可能跟操作系统与主机配置和JDK版本有关,稍有偏差。
我们应该尽量避免创建对象,可以考虑使用单例模式。关于JAVA性能方面推荐《Effective Java》中文版 第2版
相关推荐
List<HashMap> list = new ArrayList(); Connection conn = null; PreparedStatement query = null; ResultSet rs = null; try { conn = DButil.getConn(); query = conn.prepareStatement(sql); this.set...
DataType stued=new StuEducationImpl(); if(e.isForeign()){ String[] data=(String[])stued.dealDataType(e,excelvalue); obj=convertDataType(data[1],data[0].toString().getClass()); datamap.put(e....
List<Person> list = new ArrayList(); try { stmt = conn.prepareStatement(SQL4); rs = stmt.executeQuery(); while (rs.next()) { Person person = new Person(); person.setP_id(rs.getInt...
DataSource htmlDs = new ByteDataSource(this.text==null?"".getBytes():this.text.getBytes()); // 指定文本域,创建DataSource DataHandler htmlDh = new DataHandler(htmlDs); htmlPart.setDataHandler(htmlDh);...
B List myList=new ArrayList(); C ArrayList myList=new List(); D List myList=new List(); 2.paint()方法使用哪种类型的参数? A A Graphics B Graphics2D C String D Color...
List<Repository> repositories = new ArrayList(); String[] repositoryPaths = getPaths(value); for (String repository : repositoryPaths) { // Check for a JAR URL repository try { @...
List<NameValuePair> formparams = new ArrayList(); formparams.add(new BasicNameValuePair("username", "admin")); formparams.add(new BasicNameValuePair("password", "123456")); ...
List<Integer> list = new ArrayList(); int temp; for (String answer : answers) { temp = Integer.parseInt(answer); list.add(temp); } int tid = Integer.parseInt(sid); UserBean ub = ...
List<User> list = new ArrayList(); System.out.println(sheet.getLastRowNum()); for (int rowNum = 1; rowNum<= sheet.getLastRowNum() ;rowNum ++) { Row row = sheet.getRow(rowNum);//根据索引获取每一个...
//List<User> userList = new ArrayList(); //跳转到show.jsp显示数据 request.setAttribute("userId",userId); request.setAttribute("minAge",strAge); request.setAttribute("ulist",userList); request....
短信内容的存储类 /*** * CommonSms 短信用于全局变量 */ public class CommonSms{ /** id */ private int id; /**短信内容*/ private String smstext;... CommonSms cs=new CommonSms(); ...
return new ArrayList(); } // 把json转换成商品列表 try { List<CartItem> list = JsonUtils .jsonToList(cartJson, CartItem.class); return list; } catch (Exception e) { e.printStackTrace(); } ...
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); }catch(Exception e){ e.printStackTrace(); } } public static SqlSessionFactory getSession(){ return sqlSessionFactory; } ...
List<PageBean> list = new ArrayList(); newgetResouce newgetresouce = new newgetResouce(); //通过显示页面传递一个pagetype对象和PaginationBean对象 Page page = new Page(request.getParameter(...
List<BasicNameValuePair> params = new ArrayList(); params.add(new BasicNameValuePair("yhid",getUser().getYhid())); params.add(new BasicNameValuePair("lon", lon)); params.add(new BasicNameValuePair...
ArrayList<NameValuePair> postParams=new ArrayList(); postParams.add(new BasicNameValuePair("source",CONSUMER_KEY)); //封装入APP Key try { HttpPost httpRequest = new HttpPost(httpUrl); ...
views = new ArrayList(); // 初始化引导图片列表 views.add(inflater.inflate(R.layout.what_new_one, null)); views.add(inflater.inflate(R.layout.what_new_two, null)); views.add(inflater.inflate...
public List<Fragment> fragments = new ArrayList(); public String hello = "hello "; private ImageView mTab1, mTab2, mTab3, mTab4; private ImageView mTabImg; private int currIndex = 0;// 当前页卡...
imageViews = new ArrayList(); //初始化图片资源 for(int i = 0; i; i++){ ImageView imageView = new ImageView(this); imageView.setImageResource(imageResId[i]); imageView.setScaleType...