Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在哪里可以找到MemoryConsumer.java程序来测试内存消耗?_Java_Jvm Hotspot - Fatal编程技术网

在哪里可以找到MemoryConsumer.java程序来测试内存消耗?

在哪里可以找到MemoryConsumer.java程序来测试内存消耗?,java,jvm-hotspot,Java,Jvm Hotspot,在哪里可以找到MemoryConsumer.java程序来测试内存消耗?我知道这样的事情已经存在了,因为我在谷歌上看到了这样的事情。例如,这个Oracle站点引用了“consumerheap.java”,但我不知道在哪里可以找到源代码 有人知道在哪里找到或如何创建这样的对象吗?您只需创建大量的对象实例并将其保留在范围内即可 ArrayList<SomeObject> listOfObjects = new ArrayList<SomeObject>; for (int

在哪里可以找到MemoryConsumer.java程序来测试内存消耗?我知道这样的事情已经存在了,因为我在谷歌上看到了这样的事情。例如,这个Oracle站点引用了“consumerheap.java”,但我不知道在哪里可以找到源代码


有人知道在哪里找到或如何创建这样的对象吗?

您只需创建大量的对象实例并将其保留在范围内即可

ArrayList<SomeObject> listOfObjects = new ArrayList<SomeObject>;
for (int i = 0; i < aBigNumber; i++) {
  listOfObjects.add(new SomeObject());
}
ArrayList listOfObjects=新建ArrayList;
for(int i=0;i
我使用了这个
ObjectSizer
类,效果很好:


它通过创建大量的对象实例来工作,正如泰勒所建议的那样。

这真的很简单:

public class ConsumeHeap {
    public static void main(String[] args) {
        int[] a = new int[2000000000];
    }
}
这将导致在所有32位虚拟机上立即抛出OutOfMemoryError。以下情况应引起所有当代虚拟机的例外,因为它需要16*10^18字节的内存:

public class ConsumeHeap {
    public static void main(String[] args) {
        int[][] a = new int[2000000000][2000000000];
    }
}

通常,如果某个操作运行时间长或内存消耗高,则该操作被视为扩展操作。 程序的总已用/可用内存可通过java.lang.Runtime.getRuntime()在程序中获得

运行时有几个与内存相关的方法。下面的编码示例演示了它的用法

package test;

import java.util.ArrayList;
import java.util.List;

public class PerformanceTest {
  private static final long MEGABYTE = 1024L * 1024L;

  public static long bytesToMegabytes(long bytes) {
    return bytes / MEGABYTE;
  }

  public static void main(String[] args) {
    // I assume you will know how to create a object Person yourself...
    List<Person> list = new ArrayList<Person>();
    for (int i = 0; i <= 100000; i++) {
      list.add(new Person("Jim", "Knopf"));
    }
    // Get the Java runtime
    Runtime runtime = Runtime.getRuntime();
    // Run the garbage collector
    runtime.gc();
    // Calculate the used memory
    long memory = runtime.totalMemory() - runtime.freeMemory();
    System.out.println("Used memory is bytes: " + memory);
    System.out.println("Used memory is megabytes: "
        + bytesToMegabytes(memory));
  }
} 
封装测试;
导入java.util.ArrayList;
导入java.util.List;
公开课表演员{
专用静态最终长MB=1024L*1024L;
公共静态长bytesToMegabytes(长字节){
返回字节/兆字节;
}
公共静态void main(字符串[]args){
//我想你会知道如何创建一个对象的人自己。。。
列表=新的ArrayList();
对于(int i=0;i