[英]memory consumption when creating objects Java
我對整個主題不熟悉,所以我想問你幾個問題。
我的程序中有一個功能,我可以在文件系統中搜索與正則表達式匹配的某些文件夾。這意味着,我想在某個文件夾中搜索與某個正則表達式匹配的所有子文件夾。 此外,我不想在具有特定文件的特定子文件夾的特定子文件夾中進行搜索,因此我想排除在這些子文件夾中的搜索。 更准確地說,當我在文件夾 X 中搜索時,我想從搜索中排除 X 的所有具有特定子文件夾 ( Person
) 並包含特定文件 ( personality.xml
) 的子文件夾。
因此我使用了 java.nio: Files.walkFileTree
的這個“盡可能高效”的特性。
這是我的實現:
List<Path> paths = new ArrayList<>();
String regex = "myRegex";
Files.walkFileTree(Paths.get("myPathWhereIWantSearchAllSubfoldesr")), new SimpleFileVisitor<>(){
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
if(Files.isHidden(dir)){
return FileVisitResult.SKIP_SUBTREE;
}
if(dir.toFile().getName().contains(regex)){
paths.add(dir);
}
if(Files.exists(Paths.get(String.valueOf(dir), "Config", "ComponentConfig.xml"))){
return FileVisitResult.SKIP_SUBTREE;
}
return FileVisitResult.CONTINUE;
}
});
現在我的問題:
如果我一直為每個文件夾創建一個路徑並查看它是否存在,是不是創建了某種永久對象以某種方式用完 memory? 如果是這樣,他們消耗什么樣的 memory? 有什么方法可以清理這些對象,以免它們在搜索過程中填滿 memory 或任何垃圾? 因為無論如何在搜索期間,我認為 CPU 將被大量使用,如果我將搜索應用到一個巨大的文件夾,我想避免在 memory 消耗或 CPU 使用方面的任何開銷。
我非常感謝任何建議、提示或評論。
Java 是開源的,因此您可以查找Files.walkFileTree
的源代碼。 究竟如何取決於您的 IDE,在 Eclipse 中只需按 F3。 查看源代碼可以看到包含路徑的事件 object 在調用您的訪問者后立即被丟棄。 准確地說,我在看 Java 11。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.