我一直做c开发的,所以比较在意内存的申请和释放 byte[] buf_byte = new byte[30]; ,每次执行这个函数都申请一个byte变量,那么程序一直跑会不会出问题,比如内存满了之类的; |
|
用这个类可以减少你的工作 ByteBuffer buffer = ByteBuffer.allocate(30); //初始化30个长度的空间 buffer.put((byte)0x10); //添加一个byte,,后面都一样,,,,, buffer.put((byte)0x19); //// buffer.flip();//必须执行,为读取数据做准备 byte[] data = buffer.array();// 获取所有数据 就是30个字节的数组了 , 你只申请了30的byte 一般很难内存变满,在JAVA里面一般不容易出现。 |
|
内存用完倒不会,就是会影响一些效率。
如果函数执行频率高的话,还是有必要优化一下,也就是说重复使用中间缓冲区。 |
|
20分 |
没有什么隐患,只是可能有效率问题,java是块作用域,脱离语句块的变量就随时可能被虚拟机销毁
比如 public String test(){ String a; while(true){ String b; } String c; return c; } 1.String a的作用域在test()中,调用完test()后a就变成可回收的变量 只有像BItmap的decodeStream()这种实际是调用c执行的代码才需要注意内存的释放 |
分配大于1.5G的内存,必须是64位系和和开发64位应用程序才支持,我试过使用vc分配12G的内存也成功
|
|
内存申请放在循环里,循环频率过高的话会影响效率,申请全局的,用完之后将数据清除,下次接着使用!
|
|
谢谢你的讲解最详细,有些明白了 java中变量生存的时间问题 |