小编Sat*_*tti的帖子

在Java中查找内存使用情况

以下是我需要解决的方案.我有两个解决方案.

我需要维护从数据库获取的数据缓存,以便在Swing GUI上显示.每当我的JVM内存超过其分配内存的70%时,我需要警告用户过度使用.一旦JVM内存使用率超过80%,我就必须暂停所有数据库查询并清理作为用户操作的一部分提取的现有缓存并通知用户.在清理过程中,我将手动处理基于某些规则删除一些数据并指示JVM用于GC.每当GC发生时,如果内存清理并达到分配内存的60%,我需要重新启动所有数据库处理并将控制权交还给用户.

为了检查JVM内存统计信息,我发现了两个解决方案.无法决定哪种方式最好,为什么.

  1. Runtime.freeMemory() - 创建的线程每10秒运行一次并检查可用内存,如果内存超出上述限制,必要的弹出窗口将会使用户熟悉并调用方法来暂停操作并释放内存.

  2. MemoryPoolMXBean.getUsage() - Java 5引入了JMX以在运行时获取内存的快照.在,JMX我不能使用阈值通知,因为它只会在内存达到/超过给定的阈值时通知.唯一可以使用的方法是在MemoryMXBean中轮询并检查一段时间内的内存统计信息.

在使用轮询的情况下,对我来说似乎两个实现都是相同的.

请提出方法的优点,以及是否有任何其他替代方法/使用方法的任何更正.

java memory garbage-collection memory-management

6
推荐指数
4
解决办法
9283
查看次数