Мне было интересно, может ли кто-нибудь объяснить лучшее решение для наименьшего объема памяти для объекта, у которого есть файл, в следующей ситуации ...
- Может быть от 1 до нескольких сотен классов Foo.
- Безопасность на дороге будет важна в будущем.
- Не каждый файл класса Foo доступен каждый раз.
- Каждый файл уникален.
- Файл в классе Foo может быть доступен более одного раза.
Я планировал профилировать решения ниже, чтобы найти самый низкий объем памяти, и у меня есть хорошая идея, какой из них будет работать лучше, но меня интересовали некоторые отзывы. Решение 1 кажется лучшим подходом, но оно склонно к утечкам памяти, когда что-то получает доступ к получателю. Мысли
Решение 1:
public class Foo{
private final String pathToFile;
public class Foo(String pathToFile){
this.pathToFile = pathToFile;
}
public File getFile(){
return new File(pathToFile);
}
}
Решение 2:
public class Foo{
private final File file;
public class Foo(String pathToFile){
this.file = new File(pathToFile);
}
public File getFile(){
return file;
}
}
Решение 3:
public class Foo{
private final String pathToFile;
private File file = null;
public class Foo(String pathToFile){
this.pathToFile = pathToFile;
}
public File getFile(){
if (file == null){
file = new File(pathToFile);
}
return file;
}
}