首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jvm关闭后仍在使用内存-如何释放它?

jvm关闭后仍在使用内存-如何释放它?
EN

Stack Overflow用户
提问于 2011-01-02 14:19:27
回答 4查看 3.1K关注 0票数 1

我正在运行一个java应用程序,它应该通过某个决策模块来处理一批文件。我需要处理这个批次大约50小时。我面临的问题是,进程正常运行了大约一个小时,然后开始空闲。所以,我这样做了-我运行了一个小时的JVM,然后关闭它,30分钟后重新启动JVM,但由于某种原因,第二次运行仍然需要大约4-5个小时。在1小时内完成第一次运行所做的事情。任何帮助或见解都将不胜感激。

我使用的是64位windows r2服务器,2个英特尔四核处理器(2.53 GHz),24 GB内存。Java版本是1.6.0_22(64位),分配给应用程序的内存是- heap(16 GB)和PermGen(2 GB)。

外部模块也在jvm上运行,我也将其关闭,但我有一种感觉,即使在关闭之后,它也会保留内存。在我开始之前,jvm使用率是1 GB,结束之后,它往往保持在3 GB左右。有没有办法让JAVA强制释放内存?

EN

回答 4

Stack Overflow用户

发布于 2011-01-02 15:12:31

您确定要关闭的JVM确实已关闭吗?

一旦进程结束,它分配的所有RAM都不再被分配。一旦一个进程关闭,它就无法继续运行,这也意味着你没有办法告诉它这样做。这是由操作系统完成的。

坦率地说,这听起来像是JVM仍在运行,或者其他东西正在吞噬RAM。而且,这听起来像是你在尝试解决一个恶性的bug,而不是追捕并杀死它?

票数 3
EN

Stack Overflow用户

发布于 2011-01-02 18:38:57

我怀疑JVM根本没有退出。我经常在使用OutOfMemoryExceptions时停止运行的JBoss实例中看到这种症状。当我杀死JVM (通过SIGTERM/SIGQUIT)时,JVM不会及时退出,因为它正在消耗抛出/处理OOM异常的所有资源。

仔细检查日志和进程表,确保JVM正常退出。此时,操作系统将清除与该进程相关的所有资源(包括消耗的内存)

票数 0
EN

Stack Overflow用户

发布于 2011-01-03 06:54:08

在这个过程中,我注意到了一些事情。

在我关闭JVM之后,如果我删除了我写入文件系统的所有文件,那么RAM使用率就会恢复到原来的1 GB。

这会导致什么吗?我能做些什么吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4577403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档