Process Builder waitFor()问题和打开文件限制

我inheritance了一些代码: Process p = new ProcessBuilder(“/bin/chmod”, “777”, path).start(); p.waitFor(); 基本上,存在一些古老且高度基于巫术的原因,用于将键/值对作为文件存储在磁盘上。 我真的不想进入它。 但是,我留下了一堆IOexception: Exception :Cannot run program “/bin/chmod”: java.io.IOException: error=24, Too many open files Message: Cannot run program “/bin/chmod”: java.io.IOException: error=24, Too many open files 一堆我的意思是在1万亿的领域 我感觉waitFor调用是阻止这些进程等待进程完成它并退出,但我认为chmod在文件实际关闭之前返回结果。 有谁知道这是否是这些例外的原因? 我的另一个倾向是数千个文件的打开和关闭在java端没有快速发生,并且还有其他事情发生,可能是某种forms的文件缓冲区在没有被清除时正在调用fw.close()。 我对java很新,这是一个让我难过的地狱奇怪的东西。 (很高兴应用程序仍以某种方式运行..吐出一个非常大的日志文件后) 任何人都可以想办法解决这个问题,清除缓冲区或增加文件打开限制,以便jvm可以跟上自己(假设这是问题)

如何使用子文件夹作为web.xml欢迎目录

我想为Google App Engine配置我的web.xml,但我的配置不起作用。 我想用WebApp/index.html更改默认的WebApp/index.html 。 这是web.xml : App bg.app.AppServlet App /WebApp/* WebApp/index.html

Java GC安全点

当垃圾收集器在清理未引用的对象之前冻结应用程序线程时,所有线程都需要在执行时处于“安全点”。 我发现了大量描述安全点概念的文章,但很少有例子。 将安全点置于典型Java方法中的哪个位置?为什么? 更重要的是,安全点何处才能发生?

Redis Key使用Jedis过期通知

当我的密钥在redis数据存储中到期时,我正在尝试使用redis实现到期密钥通知。 redis网站提供了一些如何http://redis.io/topics/notifications的描述,但是我无法找到如何使用像Jedis这样的redis java客户端来做这个的例子? 任何可能的插图代码都非常有用,因为我是redis的新手。

从单个Maven项目创建多个可运行的JAR(包含依赖项)

我有一个有多个主要类的maven项目。 我想从这些项目中生成可运行的Jars(包括alle dependices)。 我目前有以下构建配置(使用maven.assembly): maven-assembly-plugin classpath.to.my.mainClass jar-with-dependencies 他们是通过maven-assembly来实现这一目标的吗? 如果没有,实现目标的最简单方法是什么?

垃圾收集器何时擦除使用Singleton模式的对象的实例?

垃圾收集器何时擦除使用Singleton模式的对象的实例? 对象是否比常规对象更长时间? 如何在Java中手动强制删除/垃圾回收? 谢谢。

创建循环通用引用

我正在编写一个应用程序来在对等网络中进行一些分布式计算。 在定义网络时,我有两类P2PNetwork和P2PClient。 我希望这些是通用的,因此有以下定义: P2PNetwork<T extends P2PClient<? extends P2PNetwork>> P2PClient<T extends P2PNetwork> 用P2PClient定义setNetwork(T网络)的方法。 我希望用这段代码描述的是: P2P网络由特定类型的客户端构成 P2PClient可能只属于其客户端由与此客户端相同类型的网络(循环引用) 这似乎对我来说是正确的,但如果我尝试创建一个非generics版本,如 MyP2PClient<MyP2PNetwork> myClient; 和其他变种我从编译器收到很多错误。 所以我的问题如下: 是否可以使用通用循环引用(我从未见过明确禁止它的任何内容)? 上述通用定义是否是这种循环关系的正确定义? 如果它是有效的,它是描述这种关系的“正确”方式(即是否有另一个有效的定义,这在风格上是首选的)? 在给定正确的通用定义的情况下,如何正确定义客户端和服务器的非generics实例?

netbeans中的Java堆空间..但我已经增加了堆大小!

我遇到了netbeans和Java的问题。 我的程序需要能够处理通过arraylist上传的大文件。 所以我使用-Xmx512m通过netbeans.conf文件增加最大堆大小。 我知道netbeans正在抓住变化,我已经多次重启以确保它是。 仍然,当总内存参数仅为66650112字节时,我的程序继续崩溃,出现Java堆空间内存错误; 也就是说,64M-ish。 我如何强制这个特定的类,过程,等等,以允许更多的内存分配?

exception有多贵

你知道java中的exception抛出和处理是多么昂贵吗? 我们在团队中就例外的实际成本进行了几次讨论。 有些人认为通过使用例外而导致的性能损失被高估了。 今天我在软件中找到了以下代码: private void doSomething() { try { doSomethingElse(); } catch(DidNotWorkException e) { log(“A Message”); } goOn(); } private void doSomethingElse() { if(isSoAndSo()) { throw new DidNotWorkException(); } goOnAgain(); } 这个表现如何比较 private void doSomething() { doSomethingElse(); goOn(); } private void doSomethingElse() { if(isSoAndSo()) { log(“A Message”); return; } goOnAgain(); } 我不想讨论代码美学或任何东西,它只是关于运行时行为! 你有真实的经验/测量吗?

在ThreadLocalRandom上随机

java.util.Random的实例是线程安全的。 但是,跨线程并发使用相同的java.util.Random实例可能会遇到争用,从而导致性能不佳。 请考虑在multithreading设计中使用ThreadLocalRandom。 什么样的争用,从而表现不佳? 有人可以,在这里解释一下吗? 我不知道Random和ThreadLocalRandom里面的算法是什么让它们与众不同。