JAVA中哪些组件需要内存

1.JAVA堆

    JAVA堆是用于存储Java对象的内存区域,堆的大小在JVM启动的时候就一次向操作系统申请完成,通过-Xmx 和- Xms 来控制大小,Xmx在表示堆的最大大小,Xms表示初始大小。一旦分配完成,堆的大小就要固定,不能再内存不够的时候再向操作系统申请,同时当内存空闲时也不能将多余的空间交还给操作系统。

2.线程

    JVM的运行实体是线程,当然线程需要内存空间来存储一些必要数据。每个线程创建时JVM都会为他创建一个堆栈。

3.类和类加载器

    JAVA的类和类加载器被存放在堆中,所处的区域被称为永久代(PermGen)。三种类加载器:

            (1)BootStrap Classloader 

            (2)ExtClassLoader

            (3)AppClassLoader

任何系统类,或通过应用程序加载器加载的任何应用类都不能在运行时释放。

4.NIO

    NIO使用java.nio.ByteBuffer.allocateDirect()分配的内存是本机内存,而不是Java堆上的内存,这也说明每次分配内存时都会调用操作系统的os::malloc()函数。因为不需要讲数据复制到java内存中,所以速度比在java堆上切换快了很多。

5.JNI

你可能感兴趣的:(JAVA中哪些组件需要内存)