gpt4 book ai didi

用于内存管理的 Java 线程

转载 作者:行者123 更新时间:2023-11-30 07:31:31 25 4
gpt4 key购买 nike

我有一个应用程序执行一组非常连续的离散任务。

我的问题是第一个任务消耗了大量内存,尽管消除了对象引用并调用垃圾收集器,但实际上只有大约一半的内存被释放。这会影响以后的任务。问题还在于,我想暂时授予 JVM 一个大堆以有效管理第一个任务,但我不希望它一直存在,直到 GC 决定释放其余任务是有效的。

我有了在线程内执行内存密集型任务的想法;新的子线程使用父 JVM(这并不奇怪),但内存管理似乎没有变化。

Java 是如何处理线程内存的?有没有一种简单的方法可以为子线程创建一个可以在线程完成后转储的子堆?

作为附录,这是我真正想做的:

  1. 设置一个 Neo4j 图形数据库(我正在创建数百万个节点、属性和关系,以及大量索引)[内存密集型]
  2. 在图数据库上执行查询

最佳答案

不,堆在线程之间共享,没有办法为给定线程保留内存或允许线程打破限制。线程不是进程(尽管它们在某些 jvm 中以这种方式实现)。

您可以在单独的进程(不同的 JVM)中运行此线程并通过文件或套接字将数据传递给它,但是虽然它可以解决内存问题,但它可能会降低性能......但这取决于您需要多少数据通过。

关于用于内存管理的 Java 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7294626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com