相关疑难解决方法(0)

Java:足够的免费堆来创建一个对象?

我最近在一些代码中遇到过这种情况 - 基本上有人试图创建一个大对象,当没有足够的堆来创建它时应对:

try {
    // try to perform an operation using a huge in-memory array
    byte[] massiveArray = new byte[BIG_NUMBER];
} catch (OutOfMemoryError oome) {
    // perform the operation in some slower but less
    // memory intensive way...
}
Run Code Online (Sandbox Code Playgroud)

这似乎不对,因为Sun自己建议您不要尝试捕获Error或其子类.我们讨论过它,另一个想法是显式检查空闲堆:

if (Runtime.getRuntime().freeMemory() > SOME_MEMORY) {
    // quick memory-intensive approach
} else {
    // slower, less demanding approach
}
Run Code Online (Sandbox Code Playgroud)

同样,这似乎并不令人满意 - 特别是因为选择一个值SOME_MEMORY很难轻易地与相关工作相关:对于某些任意大型对象,我如何估计其实例化可能需要多少内存?

有没有更好的方法呢?它甚至可以在Java中使用,还是在语言本身的抽象级别之下管理内存?

编辑1:在第一个例子中,估计byte[]给定长度的内存量可能实际上是可行的,但是有一种更通用的方法可以扩展到任意大对象吗?

编辑2:正如@erickson指出的那样,有一些方法可以在创建对象后估计对象的大小,但是(忽略基于先前对象大小的统计方法)是否有办法对尚未创建的对象执行此操作?

似乎还有一些争论是否合理OutOfMemoryError- 有人知道任何结论吗?

java

7
推荐指数
1
解决办法
1568
查看次数

Java中ArrayList的内存大小是多少

我有一个ArrayList<Obj>,我想知道它使用了多少内存.

Obj是变体,因此,并不像根据对象的大小乘以数组中的元素数量那么容易.

java memory size arraylist

7
推荐指数
2
解决办法
3万
查看次数

了解基本的Java特定的interverview问题

最后一天,我接受了一次采访,他们问我java问题,其中一些问题我不知道答案.我很想知道这个问题的答案.采访者没有告诉我答案.我在这里问这个问题:

  • Java是否提供任何构造来查找对象的大小?
  • 提供一种最简单的方法来查找方法执行所需的时间而不使用任何分析工具?
  • 什么是检查异常和运行时异常?
  • 如果我在try块结束时写return,finally块是否仍会执行?
  • 如果我写System.exit(0); 在try块的末尾,finally块是否仍会执行?

想知道上述问题的答案,以便下次可以帮助我.

只需简单的答案,我们就会非常感谢对规范的说明,注释和/或相关链接 - 以及学习这些东西的好方法是什么?

java

7
推荐指数
1
解决办法
1450
查看次数

了解JVM中的对象开销

我正在研究java,我记得在某个地方读过java对象,在JVM中有一些开销,这是由虚拟机用于管理的原因.所以我的问题是,有人可以告诉我是否以及如何在HotSpot JVM中获取对象的总大小,以及它可能带来的任何开销?

java memory jvm object overhead

7
推荐指数
1
解决办法
5599
查看次数

Java中布尔数组的大小是多少

据我所知,布尔大小为16字节{8为标头,1有效负载,*对齐8}

如果布尔变量是数组,需要多少钱?

我的参考

java

7
推荐指数
1
解决办法
4130
查看次数

如何在scala中找到对象的大小?

有没有办法找出scala中对象占用的内存/大小?预先感谢您回复我。

scala scalaz scala-collections

7
推荐指数
1
解决办法
7287
查看次数

是否可以确定ColdFusion中应用程序作用域变量的大小(内存占用量)?

我们使用FusionReactor来显示服务器级别的整体内存使用情况,但是能够查看应用程序范围中存储的单个项目占用多少内存将非常有用.

coldfusion memory-management fusionreactor

6
推荐指数
1
解决办法
1052
查看次数

如何估计scala中数据结构的大小?

我有一个查询返回大约600万行,这太大了,无法在内存中同时处理所有行.

每个查询都返回一个Tuple3 [String,Int,java.sql.Timestamp].我知道字符串绝不会超过20个字符,UTF8.

我如何计算出这些元组之一的最大大小,更一般地说,我如何估计这样的scala数据结构的大小?

我正在使用的机器上有6Gb.但是,使用scala-query从scala的列表中读取数据.

performance jvm scala

6
推荐指数
1
解决办法
5348
查看次数

如果知道最大堆大小,如何计算最大对象大小?

我使用-Xmx256M运行此测试以确定我可以在堆上创建的最大对象大小

    for (int m = 128;; m++) {
        try {
            byte[] a = new byte[m * 1024 * 1024];
        } catch (OutOfMemoryError e) {
            System.out.println(m + "M");
            break;
        }
    }
Run Code Online (Sandbox Code Playgroud)

并获得171M.有没有办法计算这个尺寸?

java

6
推荐指数
1
解决办法
80
查看次数

java中对象的大小是多少

众所周知,java使用以下数据类型

byte    Occupy 8 bits in memory
short   Occupy 16 bits in memory
int     Occupy 32 bits in memory
long    Occupy 64 bits in memory 
Run Code Online (Sandbox Code Playgroud)

如果我创建一个类似的

class Demo{
    byte b;        
    int i;
    long l;
}

Demo obj = new Demo();
Run Code Online (Sandbox Code Playgroud)

现在的问题是obj大小< or > or =尺寸b+i+l104 bytes.请以正当理由给我澄清.

谢谢,
Anil Kumar C.

java oop

5
推荐指数
2
解决办法
1965
查看次数