现在做一个大的项目,内存溢出问题特别明显,特别想知道怎么才可以写出高质量的代码!我举个例子抛砖引玉!也请大家多多讨论 String str = null;
for (int i = 0; i < args.length; i++) {
str = "123";
System.out.println(str);
}
for (int i = 0; i < args.length; i++) {
String str = "123";
System.out.println(str);
}
上面两个循环哪个对质量更高?
for (int i = 0; i < args.length; i++) {
str = "123";
System.out.println(str);
}
for (int i = 0; i < args.length; i++) {
String str = "123";
System.out.println(str);
}
上面两个循环哪个对质量更高?
JAVA的变量又不是指针,不管你是不是在循环里建立引用,上堆里总是有新对象产生的
不过刚刚看到这样一段话,我怀疑了
10、尽量采用lazy loading 的策略,即在需要的时候才开始创建。
例如:
String str = “aaa”;
if(i == 1) {
list.add(str);
}
应替换为:
if(i == 1) {
String str = “aaa”;
list.add(str);
}
数据库:conn、stmt、pstmt、rs、rowSet
位置:pos或position
工具类所在的包:util 不要在一个方法的中间使用“return”,“return”只能出现在一个方法的末尾。 绝不要用“continue”。 “break”只能用于switch。 最好总是在每个变量声明的时候就马上进行初始化。
最好只在需要的时候再声明(declare)一个变量,不然的话会影响代码的执行效果。 程序中应尽可能少使用数字/字符,尽可能定义静态变量来说明该数字/字符的含义
如果另一个程序员无法在三十秒之内了解你的函数做了什么,如何做以及为什么要这样做,那就说明你的代码是难于维护的,必须得到提高;一行代码尽量简短,并且保证一行代码只做一件事。那种看似技巧性的冗长代码只会增加代码维护的难度。不要让别人判断复杂的操作优先级。如果一个方法的代码长度超过一个屏幕,那么或许这个方法太长了;保证不必左右拉动滚动条来阅读一整行代自定义变量必须加注释;自定义的方法必须有详细的注释exit除了在main中可以被调用外,其他的地方不应该调用。main应该写在类的底部。
但因为这些引用都是在栈上创建的,而栈内存是即时回收的,每次循环结束,str的引用就过了生命期而不再占用内存了,所以不会造成栈溢出。栈溢出通常发生在深层递归的情况下。
还有,第一种写法中str引用的生命期更长,它会更长时间地占用栈内存,而第二种中,str引用在循环结束后就不存在了,所以,从这个意义上说,第二种会稍微好一些。