このメソッドをデバッグしようとしていますが、何も機能していないようです...
条件文で pathName.add() が問題を引き起こしていると思われます。このメソッドが実行された後、もう一度実行すると 50 MB が使用され、800 MB に達するまでに 150 MB が使用されます。しかし、すべては割り当てられたスペースです。GC がこの混乱をきれいにしないのはなぜですか ???
Ps このメソッドは、条件付きステートメントで構築された指定されたパスに基づいてディレクトリを作成しました
Ps Ps メソッド writeDir(...) は actionListener 内から呼び出されます (GUI のボタンがクリックされたとき)。ボタンは頻繁にクリックできます
Ps Ps Ps Andreas の提案を試しましたが、部分的に機能しました。pathName.clean() を呼び出した後、eden スペースは削除されましたが、割り当てられたスペースはまだ増加しており、最大数に達しました。
あなたの意見に興味があります:)ありがとう
writeDir(...) を呼び出す
startButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
progress(0);
XMLSaxLogic stax = new XMLSaxLogic(xmlPath);
DetectionFilter detectionFilter = new DetectionFilter(stax.getObjets());
try {
WriteFile writeFile = new WriteFile(detectionFilter.getDetectionList());
writeFile.writeDir(savedDirPath, detectionFilter.getHardwareList(), stax.getSiteName());
progress(100);
} catch (Exception a) {
System.out.println(a.getLocalizedMessage());
}
GetFileCount getFileCount = new GetFileCount(savedDirPath, detectionFilter.getDetectionList(), combo.getSelectedIndex());
getFileCount.getFile(savedDirPath.getAbsoluteFile().toString());
} catch (Exception a) {
System.out.println(a.getLocalizedMessage());
}
}
}
書き込みディレクトリ(...)
private ArrayList<String> detectList;
private String detection = null;
private String build = null;
private Set<String> pathName = new LinkedHashSet<>();
public WriteFile(ArrayList<String> detectList) {
this.detectList = detectList;
}
public void writeDir(File root, ArrayList<String> sevenElementList, ArrayList<String> oneElementList) {
for (String site : oneElementList) {
for (String s : sevenElementList) {
int indexx = s.indexOf("_");
int id = Character.getNumericValue(s.charAt(indexHardware - 1));
for (String detectionList : detectList) {
int index = detectionList.indexOf("_");
int sId = Character.getNumericValue(detectionList.charAt(index + 1));
if (detectionList.contains("Apple") && sId == id) {
detection = site.trim() + "/" + s + "/" + detectionList.trim();
pathName.add(format(detection));
} else if (detectionList.contains("Banana") && sId == id) {
build = detection.trim() + "/" + detectionList.trim();
pathName.add(format(build.trim()));
} else if (detectionList.contains("nananana") && sId == id) {
pathName.add(format(build.trim() + "/" + detectionList.trim()));
} else if (detectionList.contains("Watermelone") && sId == id) {
pathName.add(format(build.trim() + "/" + detectionList));
} else if (detectionList.contains("Orange") && sId == id) {
pathName.add(format(site.trim() + "/" + s.trim() + "/" + detectionList.trim()));
}
}
}
}
createDirTest(pathName, root);
}
private void createDirTest(Set<String> pathArray, File root) {
for (String s : pathArray) {
File subdir = new File(root, s);
subdir.mkdirs();
}
}
private String format(String toBeFormated) {
String toBeTrimmed = trimLastChar(toBeFormated.replace("ä", "ae").replace("ß", "ss").replace("ü", "ue").replace("ö", "oe").trim());
return toBeTrimmed;
}