我有一个应用程序执行一组非常连续的离散任务。内存管理的Java线程
我的问题是,首要任务之一消耗大量的内存,尽管消除对象引用和调用垃圾收集器,只有大约一半的内存基本上释放。这会影响以后的任务。问题还在于,我想临时授予JVM一个大堆来有效地管理第一个任务,但是我不希望这个问题在GC决定释放其余部分时有效。
我不得不执行的内螺纹的内存密集型任务的想法;新的子线程使用父JVM(这里并不令人意外),但内存管理看起来没有变化。
如何处理Java的线程的内存?有没有简单的方法来创建子线程的子堆,可以在线程完成后转储?
作为附录,这是我真正想做的事:
- 设置一个的Neo4j图形数据库(我创造几百万个节点,属性和关系,与众多指标一起)内存密集型]
- 图形数据库
实际上你是否在任何时候内存不足?如果是这样,请增加VM的内存。如果没有,请不要试图了解VM如何处理内存。任何尝试这样做只会导致糟糕的代码,当虚拟机改变处理内存的方式时会破坏它。 – Bombe
我确实耗尽内存;我本可以增加JVM的内存,但是我不想让剩下的代码有足够的内存空间。而且,概念证明的要点是尽可能少地运行这个概念。我发现有很好的方法可以直接为neo4j配置内存管理(请参阅下面的标记答案)。 我同意你关于不打扰与MEM管理和出于实用目的,GC欺骗概念,但它仍然是有趣的探索的可能性;) – JeffreyHammansson