jvm如何用系统内存管理堆内存?

时间:2015-01-06 10:35:39

标签: java performance jvm

1. JVM如何使用系统内存管理堆内存?

2.我们在java编程中需要注意哪些问题以防止堆空间问题?

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

java中的堆内存是什么?

  

当Java程序启动时,Java虚拟机会从中获取一些内存   操作系统。 Java虚拟机或JVM为所有人使用此内存   它的需要和部分内存是调用java堆内存。堆进来   Java通常位于地址空间的底部并向上移动。   每当我们使用new运算符或任何其他方法创建对象时   对象从堆中分配内存,当对象死亡或垃圾时   收集,内存回到Java中的堆空间

Jvm堆管理?

  

我们知道在堆内存和垃圾中创建了对象   collection是一个从Java Heap中删除死对象的过程   空间并将内存返回给Java中的Heap。为了垃圾   集合Heap分为三个主要区域,名为New   一代,旧的或终身的一代和彼尔姆空间。新一代   Java Heap是Java Heap内存的一部分,它是新创建的对象   存储,在应用过程中创建了许多对象和   死了,但那些仍然活着,他们被转移到老年或终身代   通过Java垃圾收集器线程对主要或完整的垃圾收集。   Java Heap的Perm空间是JVM存储有关类的元数据的地方   和方法,字符串池和类级别详细信息。你可以看到如何   垃圾收集在Java中工作,以获取有关Java中的Heap的更多信息   和垃圾收集。

要注意java编程以防止堆空间问题?

  

当JVM启动时,JVM堆空间等于堆的初始大小   由-Xms参数指定,作为应用程序进度的更多对象获取   创建并扩展堆空间以容纳新对象。 JVM   还定期运行垃圾收集器以从中回收内存   死对象。 JVM在Java中扩展了一些接近最大堆的堆   -Xmx指定的大小,如果没有剩余的内存   在Java堆中创建新对象,JVM抛出   java.lang.OutOfMemoryError和你的应用程序死了。扔之前   OutOfMemoryError Java堆中没有空格,JVM尝试运行垃圾   收集器释放任何可用的空间,但即使在那之后也不多   在Java中Heap上可用的空间导致OutOfMemoryError。至   解决此错误您需要了解您的应用程序对象   配置文件,即您正在创建哪种对象,哪些对象是   你可以使用探测器或堆分析器来获取多少内存等   解决Java中的OutOfMemoryError问题。 “java.lang.OutOfMemoryError:   Java堆空间“错误消息表示Java堆没有   足够的空间,不能进一步扩大   “java.lang.OutOfMemoryError:PermGen space”出现错误消息   应用程序将永久生成Java Heap   无法加载类或分配实习字符串。

     

尝试使用静态变量和方法,因为它们共享通用内存。

Source