我曾经参与过一些项目,这些项目的主要目标是实现更好的性能和减少内存消耗。但是相信我,用Java控制内存消耗已经很难了。
这个wiki页面,在"Java程序速度“上说,在某些情况下,在低级别和数字基准测试上等同于C++。
这些统计数字在时间计算性能基准方面并没有显示出很大的差异。但是,Java中的内存使用量要比C++高得多,因为Java中的每个对象有8字节的开销,每个数组有12字节的开销(32位;64位java中是上面提到的64位java的两倍)。
现在的问题是,人们采取了哪些措施来最小化Java?中的内存利用率?
请注意,我非常关心内存而不是性能,因为我想不出比“编写更好的程序”和“在JDK中正确地调优内存”更好的方法了。
发布于 2012-09-24 04:26:31
根据您正在从事的工作,您可以从不同的编程实践中获益,例如:
发布于 2012-09-24 04:54:50
在java中管理内存可能有两个动机。
1.避免频繁创建/删除对象.
这反过来又避免了GC经常醒来,因为这会导致一个或多个执行线程挂起。
避免临时/永久内存漏洞
2.减少VM的总体内存消耗
如果您的VM将在具有严格内存约束的环境中运行,则需要这样做。
理想情况下,从内存的角度来看,一个编写良好的java程序应该尝试并实现上述这两个目标。现在,要实现1,您应该执行以下操作。
以上各点亦有助管理或控制第2点。
要对VM内存大小进行检查,您需要执行上述各点,并执行以下操作
在启动VM时使用Xmx和Xms标志,并故意将它们的值设置为低于可能需要的值,并注意OutOfMemoryError。
如果OutOfMemoryError发生了,这意味着您已经超过了最大VM大小。确定原因,并开始调优您的对象创建。
希望能帮上忙..。
发布于 2012-09-24 04:23:18
除了减少您创建的对象的数量和尝试使您的对象短命之外,您对内存无能为力。但是,Java仍将使用它所允许的所有内存,以获得最佳性能。
https://stackoverflow.com/questions/12558767
复制相似问题