我有一个关于JVM内存管理的问题(至少对于SUN的内存管理问题).
我想知道如何控制JVM将未使用的内存发送回操作系统(在我的情况下为Windows)这一事实.
我写了一个简单的java程序来说明我的期望.使用-Dcom.sun.management.jmxremote选项运行它,以便您也可以使用jconsole监视堆.
使用以下程序:
package fr.brouillard.jvm;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.List;
public class MemoryFree {
private BufferedReader reader = new BufferedReader(new
InputStreamReader(System.in));
private List<byte[]> usedMemory = new LinkedList<byte[]>();
private int totalMB = 0;
private int gcTimes = 0;
public void allocate(int howManyMB) {
usedMemory.add(new byte[howManyMB * 1024 * 1024]);
totalMB += howManyMB;
System.out.println(howManyMB + "MB allocated, total allocated: " +
totalMB + "MB");
}
public void free() {
usedMemory.clear();
}
public void gc() {
System.gc(); …
Run Code Online (Sandbox Code Playgroud) 我有几个使用 java 注释处理器执行的检查,但我也想对未注释的类型进行检查。
例如,如果我们假设我有一个注释,例如@Responsible(name="xyz")
挂钩编译过程的最佳方法是什么,以强制所有顶级类型都存在该注释。
在我当前的实现中,我依赖于两个注释,预期的注释(Responsible)和包级别的注释。后者用于“触发”注释处理器,即使不存在预期的注释。然后,在触发的注释处理器内,我搜索并过滤磁盘上的 java 文件(使用传递给编译器的参数)以收集我想要处理的所有文件,并在 java 文件对应于处理器正在处理的注释类型时过滤它们。如果有人在未指定注释的情况下提交新文件,则构建会失败。
是否有更干净的方法来查找“无注释”类型?
是否有一种XPath方法使用XPath查询直接恢复XML节点的前一个兄弟节点的一个特定属性?
在下面的示例中,我想检索在标有该元素的元素之前的alt
每个img
节点的属性值.div
id=marker
<content>
<img alt="1" src="file.gif" />
<img alt="2" src="file.gif" />
<img alt="3" src="file.gif" />
<img alt="4" src="file.gif" />
<div id='marker'></div>
</content>
Run Code Online (Sandbox Code Playgroud)
对于此示例,我想检索值1 2 3 4
.
我使用以下XPath查询
//div[@id='marker']/preceding-sibling::img
Run Code Online (Sandbox Code Playgroud)
为了检索我想要的节点列表
<img alt="1" src="file.gif"/>
<img alt="2" src="file.gif"/>
<img alt="3" src="file.gif"/>
<img alt="4" src="file.gif"/>
Run Code Online (Sandbox Code Playgroud)
由于它是一个节点列表,我可以在节点上迭代以检索我正在寻找的属性值,但是有一种XPath方式吗?我原以为能够写下这样的东西:
//div[@id='marker']/preceding-sibling::img@alt
or //div[@id='marker']/preceding-sibling@alt::img
Run Code Online (Sandbox Code Playgroud)
但是,一旦你使用了XPath Axe
类似的兄弟姐妹,我甚至不知道是否可能.