关于垃圾回收的问题

sxfreesky
07-05-24 141

在一个项目运行时,通过JProfile观察,内存占用在不断上升,当且仅当内存占用达到某个点,比如5MB时,JVM会启动一次GC,将内存中的垃圾回收掉。还原为初始的内存占用,比如2MB。在项目运行时,由于不断的接收消息,处理消息,这个过程会不断重复。
现在的问题是,如果该项目运行到占用的内存达到回收垃圾的阀值的那个点之前就停止做任何可能会消耗内存的动作,比如不再接收到消息,那这个运行的系统就在一段时间内不会出现GC,而内存的占用当然也就始终不变了。这一段时间我由于时间紧的缘故始终没有延续太长,大概是半个小时左右。
请问这个现象是正常的吗,如果是,那么我应该怎样做来迫使JVM回收掉这些垃圾,不想显示地调用gc,太消耗资源了。