我真的很困惑:在我的Windows 2008r2中,我有一个Windows服务,实际上它是一个以SYSTEM用户身份运行的java进程.现在,我将Jstack原始用于该服务.但它发生错误:
insufficient memory or insufficient privilege to attach
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用Jstack的选项-F,它可以很好地工作.我查看了jdk的源代码,它使用了一个BugSpotAgent类来完成上面的操作.
我想知道我无法原始使用Jstack的根本原因,是SYSTEM用户权限问题吗?我也尝试使用PsExec.exe(一个工具)来原始运行我的Jstack(这意味着我将使用SYSTEM用户运行Jstack),但它仍然无法工作.
你能帮助我吗?
感谢和问候!
我遇到了关于hadoop2.2.0追加操作的问题.我通过HDFS java API将一些字节附加到hdfs文件.首先,如果在附加操作之前文件不存在,我将创建目标文件,代码如下:
String fileUri = "hdfs://hadoopmaster:9000/in/append_test.txt";
// create the hdfs file, if not exists
HdfsClient.createPathIfNotExist(fileUri);
// do 5 times append operation
for (int i=0; i<5; i++){
HdfsClient.appendTo(fileUri, ("append content"+i).getBytes("UTF-8"));
}
Run Code Online (Sandbox Code Playgroud)
该createPathIfNotExist函数:
Path p = null;
FileSystem fs = null;
try {
fs = FileSystem.get(URI.create(uri), conf);
p = new Path(uri);
if (!fs.exists(p)) {
if (uri.charAt(uri.length() - 1) == '/'){ //create a directory
if(fs.mkdirs(p)){
// create successfully
}
}else{ //create a file
FSDataOutputStream fos = fs.create(p);
fos.close();
}
} …Run Code Online (Sandbox Code Playgroud)