JAVA对内存和非堆内存_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > JAVA对内存和非堆内存

JAVA对内存和非堆内存

 2015/5/1 19:08:05  干宝周  程序员俱乐部  我要评论(0)
  • 摘要:在看Netty时,看到了一个词,“非堆内存”。简单来说,堆内存就是heap,非堆内存就是non-heap.按照官方的说法:“Java虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在Java虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heapmemory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存
  • 标签:Java 内存

在看Netty时,看到了一个词,“非堆内存”。 简单来说,堆内存就是heap, 非堆内存就是non-heap.

?

??? 按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给 自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法 的代码都在非堆内存中。?

?

具体来说,Non-Heap Memory Pool包括:
?1.?Code Cache?(non-heap):储存编译的程式码和local variables。?
2.?Permanent Generation(non-heap):包含虚拟机器自身的所有反射资料。?比如class和mothod物件。?对于使用class data sharing的JVM,分为唯读(shared-ro)和读写(shared-rw)两个区域。

?

现在的疑问是:Netty为什么用Non-Heap Memory呢?为什么用Non Heap Memory就能加快读取速度呢?

发表评论
用户名: 匿名