堆内内存:
1.一般情况下,一个新的对象创建在JVM内的堆上,并为其分配内存空间。堆空间由JVM垃圾回收器管理,称为堆内内存(on-heap memory)
2.虚拟机会定期对垃圾内存进行回收,有时会进行一次彻底的回收Full GC
3.彻底回收时,垃圾收集器会对所有分配的堆内内存进行完整的扫描,这意味一次垃圾收集对Java 应用造成的影响,跟堆的大小是成正比的,过大的堆会影响 Java 应用的性能
堆外内存:
1.和堆内内存相对应,堆外内存就是把内存对象分配在Java虚拟机的堆以外的内存,这些内存直接受操作系统管理,而不是虚拟机
2.这样能够维护一个较小的堆,在一定程度上减少垃圾回收对应用程序造成的影响,堆外内存也被称为直接内存
3.可以使用NIO包下的DirectByteBuffer进行堆外内存的管理和使用,它会在对象创建的时候就分配堆外内存
堆外内存的优点:
1、保持了一个较小的堆内内存,可以减少垃圾收集对应哟的影响。
2、在使用缓存时,需要消耗一些内存空间来提升速度,使用堆内内存会给虚拟机带来GC压力,使用硬