Java内存:堆空间和垃圾收集器

了解关于Java如何通过堆空间和垃圾收集管理内存。 理解内存分配可以帮助避免在Java程序中的内存泄漏。

A+ A-

最近,我写了一个Java应用程序,它在运行时,需要相当多的内存和我开始了内存不足的错误:

 错误:java.lang.OutOfMemoryError:Java堆空间 

当我们需要运行内存耗油方案这种情况经常发生。 下面是解决这样的问题的几种方法。

什么是Java堆空间?

首先,让明白什么是堆空间。 那么,Java使用的内存主要是在安排 。 的Java保持个从一个传递的参数调用方法到称为方法 ,在堆叠结构的形式(即参数被压在和弹出出栈根据需要)。 另一方面,堆是一个随机存取存储器空间,其中的Java创建并保持的对象。 Java的创建此堆空间内的对象只要它找到足够的空间来容纳的对象。 所以,当你创建一个新的对象(例如新的String() ;)对象获取堆空间中创建并占有它可以放入内存。 在垃圾收集,Java的释放而不再引用这些对象的堆空间。 但如果引用(即“要求”)对象人数不断在增加,我们不尊重他们-the JVM用完了堆空间。

的存储器,一个类将要求量取决于它的数据成员的数量和类型。

  1. 类本身需要8个字节的最低
  2. 每一个数据成员需要4个字节(long和double需要8个字节)。 即使是一个布尔变量是使用4个字节,虽然它只需要一个位得到保存。
  3. 使用的内存量的增长在8字节的块
优化您的Java程序

第一步来解决这个问题,应该要经过程序,看看它是如何被修改,以使其使用较小的存储器。 由于长期记忆的成本已经非常低的比较是什么在20世纪60年代。 和程序员已成为记忆津贴,以他们的程序方面相当奢华。 然而尽管如此,更多的往往不是,我们需要编写需要比更多的可用内存的程序。 节俭内存使用量的情况下是一件好事,因为它不仅减少了程序崩溃的机会,但也有时它提高执行速度。

你应该设置对象为时,他们不再在你的代码需要。 如果您运行在其中创建对象(S),但是不要求时,他们不丢弃一个循环,这是更重要的。

利用Java垃圾收集方法

对内存使用优化的第二步可能是显式调用垃圾收集方法。 Java的自动调用在需要时这种方法并释放它包含可不再被引用的对象的内存空间。 但是,你也可以在你的代码中调用这个方法(例如,一个“大任务”的完成,下一个“艰巨的任务”之后即将开始)。 要调用垃圾收集器,使用方法:

 调用Runtime.getRuntime()GC()。 

可以前后GC()方法被调用监视的存储器的状态。

 的System.out.println(“nnCalling垃圾Collectornn”);
的System.out.println(“自由内存才道:”+调用Runtime.getRuntime()freeMemory());
调用Runtime.getRuntime()GC()。
的System.out.println(“自由内存后:”+调用Runtime.getRuntime()freeMemory());
的System.out.println(“nnGarbage收集finishednn”); 

freememory()方法返回的可用内存量可以以字节为单位。 对于由Runtime类提供的其他方式看到的Java API

给更多的内存JVM

内存使用优化尽管努力,有时JVM确实需要更多的内存。 在这种情况下,我们可以通过命令行告诉JVM使用的内存指定数量:

 java的-Xms2000m -Xmx3500m 

-Xms-Xmx开关指定交换空间(虚拟内存)的金额JVM可以在你的设备中使用。

内存-Xms指定最小(即初始)金额

-Xmx指定的内存,JVM可以使用的最高金额。

这些内存值应以MB为单位进行指定。

所以,这是关于Java管理通过堆空间和垃圾回收机制的内存。 这是明智的选择,每一个Java程序员应该具备的Java如何处理记忆清晰的认识。 只有你就可以对内存密集型程序提高工作效率。

Ads

分享

最近

最好的Ubuntu的替代寻找,如果你是一个Linux爱好者

首先,让我们越来越熟悉的东西; 基本的,但有点偏离轨道! 你有没有得到使用Linux和Ubuntu方面困惑? 你任何机...

如何在Gmail收件箱中添加签名 - 添加在Gmail谷歌的签名

收件箱由谷歌为谷歌的在过去几年推出的最好的事情之一。 它带入一个统一的收件箱几乎所有我们想要的一切。 我们必须说,设计...

每周科技新闻:诺基亚,谷歌和任天堂

大家好,这是星期五,3月3日,只是像往常一样,我们又回到我们的每周新闻综述。 本周的新闻有很多有趣的报道。 从诺基亚的...

树莓派项目入门 - 你可以用树莓派做些什么

树莓Pi为一系列低功耗,由莓裨基金会创建单板计算机。 最初创建教孩子们计算机科学和编程的基础知识在发展中国家中,树莓派...

Android的2017年最佳VPN - 如何使用VPN在安卓

一去不复返的VPN只为高科技,savvies和黑客的天! 而且,承认这一点,我们已经受够了易怒的演讲有关这些服务的。 ...

注释