小编Bum*_*Gee的帖子

如何防止java.lang.OutOfMemoryError:Scala编译中的PermGen空间?

我注意到我的scala编译器有一种奇怪的行为.它在编译类时偶尔会抛出OutOfMemoryError.这是错误消息:

[info] Compiling 1 Scala source to /Users/gruetter/Workspaces/scala/helloscala/target/scala-2.9.0/test-classes...
java.lang.OutOfMemoryError: PermGen space
Error during sbt execution: java.lang.OutOfMemoryError: PermGen space
Run Code Online (Sandbox Code Playgroud)

它只会偶尔发生一次,并且通常不会在随后的编译运行中抛出错误.我使用Scala 2.9.0并通过SBT编译.

有没有人知道造成这个错误的原因是什么?提前感谢您的见解.

memory-management scala sbt scalatra-sbt apache-spark

79
推荐指数
5
解决办法
2万
查看次数

mvn release:准备不对pom.xml提交更改

我正在尝试使用Maven 发布Jenkins插件(stashNotifier)并面临发布插件的问题.

mvn clean release:prepare
Run Code Online (Sandbox Code Playgroud)

运行完成没有错误但无法在我的本地git存储库中提交更改的pom.xml.即使它确实标记了我试图发布版本1.0.2的分支的HEAD.这是我的本地分支在准备发布之前的样子

* df60768 (HEAD, origin/develop, develop) upgraded parent pom to version 1.498
* 792766a added distribution management section to pom.xml and amended readme.md 
Run Code Online (Sandbox Code Playgroud)

这就是它之后的样子

* df60768 (HEAD, tag: stashNotifier-1.0.2, origin/develop, develop) upgraded parent pom to version 1.498
* 792766a added distribution management section to pom.xml and amended readme.md 
Run Code Online (Sandbox Code Playgroud)

不幸的是,pom.xml已经包含下一个开发版本,这反过来会导致后续版本:执行以释放该快照版本.

从maven的命令输出,它几乎看起来像是省略了git commit命令:

[INFO] Checking in modified POMs...
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git add -- pom.xml
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Executing: …
Run Code Online (Sandbox Code Playgroud)

plugins release maven jenkins

76
推荐指数
5
解决办法
3万
查看次数

何时使用OSGi EventAdmin而不是?

关于OSGi EventAdmin服务的使用,我有一个一般性的问题.我目前正在一个可能每秒生成数千个事件的环境中使用它.我担心EventAdmin服务可能是一个瓶颈.我从我的探查器得到的初步结果似乎支持这一点.我的问题是:

  1. 使用EventAdmin服务时是否有一般的经验法则?
  2. sendEvent和postEvent方法在性能方面有何不同?
  3. 是否有一个特定的OSGi容器,已知具有低性能的EventAdmin实现?

在此先感谢您的支持!

干杯,格奥尔格

osgi event-handling

8
推荐指数
1
解决办法
3443
查看次数

为什么使用Thread.currentThread().isInterrupted()而不是isInterrupted()?

我有一个关于Thread子类的取消策略的实现的问题.通常的做法是这样做:

class A extends Thread {

  [...]

  public final void run() {
     try {
        while(!Thread.currentThread().isInterrupted()) {
           [...]
        }
     } catch (InterruptedException consumed) {
     }
  }

  public final void cancel() {
     interrupt();
  }    
}
Run Code Online (Sandbox Code Playgroud)

我的问题是关于Thread.currentThread()...为什么通常的做法是使用currentThread()来检查中断标志而不是在cancel()方法中设置它?仅仅像这样调用A的isInterrupted()方法就不够了:

while (!isInterrupted()) {
   [...]
}
Run Code Online (Sandbox Code Playgroud)

我无法在Thread JavaDoc,Brian Goetz关于并发Java或stackoverflow的优秀书籍中找到答案.

提前感谢您的见解!

干杯,格奥尔格

java concurrency multithreading

8
推荐指数
2
解决办法
1万
查看次数

如何指示sbt 0.11.x哪些源文件包含测试

我是Scala,SBT和Specs的新手.我已经使用规范创建了一个简单的规范,并喜欢通过"测试"任务通过SBT运行它.当我执行该任务时,我收到以下错误:

> test
[info] No tests to run for test:test
[success] Total time: 0 s, completed Nov 30, 2011 4:27:38 PM
Run Code Online (Sandbox Code Playgroud)

我知道我必须告诉SBT我的哪些文件是测试文件.我在SBT主页和Stackoverflow上找到的唯一例子就是这段代码

override def includeTest(s: String) = { s.endsWith("Spec") }
Run Code Online (Sandbox Code Playgroud)

我包含在Build.scala文件中.但是,似乎这不再适用于SBT 0.11.x. 我收到以下编译错误

[info] Compiling 1 Scala source to /Users/gruetter/Workspaces/scala/helloscala/project/target/scala-2.9.1/sbt-0.11.1/classes...
[error] /Users/gruetter/Workspaces/scala/helloscala/project/Build.scala:4: method includeTest overrides nothing
[error]     override def includeTest(s: String) = { s.endsWith("Spec") }
Run Code Online (Sandbox Code Playgroud)

有人知道如何使用新的SBT版本吗?

在此先感谢您的帮助!

干杯,格奥尔格

specs scala sbt

1
推荐指数
1
解决办法
521
查看次数