【问题标题】:How can I calculate the number of objects that heap memory will hold?如何计算堆内存将容纳的对象数量?
【发布时间】:2018-09-02 10:50:48
【问题描述】:

我想在 java 中编写/设计一个算法,我从输入

开始

variable int i=0;

while (i==0){i==1;}

使用 var i 在新的内存位置再次创建或重新开始,将值再次设置为 1; 循环将值 1 分配给 var 并跳转到下一个内存位置。
直到堆内存满
然后使用循环计算内存中创建和存在的总变量

System.out.println(total var created);

我可以在 Java 中做到这一点吗?

我已经完成了“在 java 中创建固定变量计数需要多少时间”

【问题讨论】:

  • 不,你不能这样做。循环不会每次都创建新变量;它将重用旧的。
  • 好的!那我该怎么做呢?
  • 我们仍然无法确定您想要做什么。如果你只是想填满内存,创建一个链表并不断添加。

标签: java algorithm control-structure


【解决方案1】:

如果我没听错的话,你想填满堆内存。我猜想在循环中创建字符串文字会做到这一点;

int i = 0;
while(i < 1000){

    System.out.println("2 times" + i + "equals" + i * 2);
    i = i + 1;
}

将在常量字符串池中创建 1000 个字符串文字。这些文字在一段时间内不会被垃圾收集 - 足以填充内存 - 用于重用。所以他们最终会填满内存。如果你增加值 1000,你会得到更多的文字。

For further reading, here's a blog post

【讨论】:

  • 您的程序打印:2次0次2次2次2次0quals0 2次0quals0 2次0quals0 2次0quals0 2次0quals0 2次0quals0 2次0quals0 2次0次2次2次0次2次2次2次2次2倍0次。 times0equals0 2 times0equals0 我在while循环中添加了这一行:i=i+1;现在它打印: 2 times1equals2 2 times2equals4 ...................................... 2 times999equals1998 2 times1000equals2000
  • 我想将值分配给 var。 var 必须在每个循环中存储由循环初始化的每个值,并且值/vars 必须保留在内存中,循环必须运行直到内存已满,我将获得堆内存中占用的变量总数..
  • 好吧,看来我的回答不符合您的要求。只要你使用相同的变量 i,你就不会得到越来越多的变量,所以我想不出另一种解决方案。无论如何,我不会删除我的帖子以保持您的问题受欢迎。也许有人能解决你的问题。
猜你喜欢
  • 2020-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-19
  • 2012-11-25
  • 2019-04-17
  • 2019-02-11
  • 2018-04-14
相关资源
最近更新 更多