我正在运行JVM 1.5.0(Mac OS X Default),我在Activity Monitor中监视我的Java程序.我有以下内容:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Date;
public class MemoryTest {
public static void memoryUsage() {
System.out.println(
Runtime.getRuntime().totalMemory() -
Runtime.getRuntime().freeMemory()
);
}
public static void main( String[] args ) throws IOException {
/* create a list */
ArrayList<Date> list = new ArrayList<Date>();
/* fill it with lots of data */
for ( int i = 0; i < 5000000; i++ ) {
list.add( new Date() );
} // systems shows ~164 …Run Code Online (Sandbox Code Playgroud) 我遇到的问题是我的应用程序使用的内存只有100MB,之后它减少了50MB,但是在Window Task Manager上显示150MB并且始终保持或增加但不减少,我们如何减少任务管理器上的内存(私有工作集)?
我有一个java应用程序,在任何复杂执行之前处于空闲状态时,在Heap中使用23 MB并且TaskManager中的java.exe进程大小约为194 MB.经过一些复杂的操作后,java.exe的大小增长到大约500MB,堆大小也增长了.通过调用System.gc()方法,在几个完整的GC之后,堆大小减少到23MB.但java.exe的大小从大约600MB减少到大约237MB,其中仍有大约43 MB的数据.有没有办法减少这个?或者是由于某些行为?