gpt4 book ai didi

java - 为我的 jar 文件提供更多内存

转载 作者:行者123 更新时间:2023-12-01 07:34:02 25 4
gpt4 key购买 nike

我有一个多线程爬虫。在此程序中,如果我加载大量种子,则会出现错误。我看到 java.lang.OutOfMemoryError 并认为可能是内存不够。我尝试使用以下参数运行 crawler.jar 文件:java -Xms512m -Xmx3G -jarcrawler.jar 但到目前为止,没有运气。

这是程序的StackTrace:

Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:597)
at com.sleepycat.je.utilint.DaemonThread.runOrPause(DaemonThread.java:99)
at com.sleepycat.je.dbi.EnvironmentImpl.runOrPauseDaemons(EnvironmentImpl.java:772)
at com.sleepycat.je.dbi.EnvironmentImpl.envConfigUpdate(EnvironmentImpl.java:717)
at com.sleepycat.je.dbi.EnvironmentImpl.finishInit(EnvironmentImpl.java:579)
at com.sleepycat.je.dbi.DbEnvPool.getEnvironment(DbEnvPool.java:204)
at com.sleepycat.je.Environment.makeEnvironmentImpl(Environment.java:230)
at com.sleepycat.je.Environment.<init>(Environment.java:212)
at com.sleepycat.je.Environment.<init>(Environment.java:166)
...

这是否如我怀疑的那样与内存有关?当我使用 java -jar 运行 jar 文件时,添加 -Xms512m -Xmx3G 是否有效?

我运行了任务管理器(我在 Windows Server 上运行),但运行应用程序后,内存并没有增加那么多!我错了吗?

最佳答案

-Xms512m -Xmx3G选项仅影响JVM的堆大小,并不能解决您的问题。

但是,默认的线程数限制在大多数情况下应该足够了。您可以通过调整 JVM/系统选项来增加限制,但无论您创建多少个线程,系统的容量都受到计算机资源的限制。例如cpu、内存、网络等

我建议从不同的角度解决这个问题:

  • 尝试在工作线程之间共享环境实例。
  • 尝试将并发级别控制在系统繁忙且不触及线程数限制的速率。

关于java - 为我的 jar 文件提供更多内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14596970/

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