String s = "";
for(i=0;i<....){
s = some Assignment;
}
Run Code Online (Sandbox Code Playgroud)
要么
for(i=0;i<..){
String s = some Assignment;
}
Run Code Online (Sandbox Code Playgroud)
我不需要再次在循环外使用's'了.第一个选项可能更好,因为每次都不会初始化新的String.然而,第二个将导致变量的范围限于循环本身.
编辑:回应Milhous的回答.将String分配给循环中的常量是没有意义的吗?不,这里'一些分配'意味着从迭代的列表中获得的变化值.
此外,问题不是因为我担心内存管理.只是想知道哪个更好.
好吧,我开发了一个使用多个对象关系的java应用程序,这使得内存使用过于昂贵.我没有管理java内存的经验,因为应用程序设计很难破坏对象并重新利用先前清除的空间.例如,我正在使用Observer和MVC模式.
所以,理论说......
如果从任何活动线程或任何静态引用无法访问对象,则该对象符合垃圾收集或GC的条件
换句话说,如果对象的所有引用都为null,则可以说对象符合垃圾回收的条件.
但是,在我的短暂经历中,当我有一个像我一样的场景,你不知道如何销毁我想要从内存中删除的对象(例如,当一个框架关闭时)时,我很难破坏所有引用存在许多对类的引用.
根据这个上下文,当有多个引用时,如何处理对象破坏?或者当你有一个复杂的参考对象时,我怎么需要管理内存?
我有一个应用程序,它与许多在方法中创建的自定义对象一起工作,并且从不需要在它们之外.整个结构(在我看来)非常好的面向对象,并使用服务,实用程序和DI模型.
现在,当我运行我的第一个"大型"测试时,我很快遇到了OutOfMemoryExceptions.现在,我不只是想增加堆空间并完成它,因为我可以想象这不会解决问题,而是延迟它直到我的应用程序增长更多并遇到同样的问题.
我正在寻找一些简单易用的解决方案,技巧和片段,它们可以帮助应用程序处理垃圾收集和堆空间,尤其是涉及许多使用对象创建操作的循环时.
像"不要在循环中创建对象,在循环之前创建它们并在其中覆盖它"之类的东西.
我可以开发一个应用程序/项目.但这不符合正确的编码标准.需要大量内存而其他人无法轻易理解.编码的通用标准是什么.我有一个问题,比如如何命名变量方法以及打包类的最佳方法是什么.像那样?
为此,是否有任何教程或示例请分享.
提前致谢.
如何在Java中手动删除对象?有没有像obj.delete()或的方法obj.kill()
我来自C背景,所以我承认在用Java编写时我仍然在努力放弃内存管理.这个问题出现了几次,我很乐意对此进行详细阐述.以下是编写相同例程的两种方法,唯一的区别是何时double[] array声明:
代码示例1:
double[] array;
for (int i=0; i<n; ++i) {
array = calculateSomethingAndReturnAnArray(i);
if (someFunctionOnArrays(array)) {
// DO ONE THING
} else {
// DO SOME OTHER THING
}
}
Run Code Online (Sandbox Code Playgroud)
代码示例2:
for (int i=0; i<n; ++i) {
double[] array = calculateSomethingAndReturnAnArray(i);
if (someFunctionOnArrays(array)) {
// DO ONE THING
} else {
// DO SOME OTHER THING
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,private double[] calculateSomethingAndReturnAnArray(int i)始终返回相同长度的数组.我强烈厌恶代码示例2,因为它只能覆盖现有数组时为每次迭代创建一个新数组.但是,我认为这可能是我应该坐下来让Java为我处理这种情况的时候之一.
偏好其中一种方式或者它们在Java中真正相同的原因是什么?