频繁被使用java
jdk1.4加入NIO(New Input/Output),一种基于通道与缓冲区的I/O方式,并发
能够使用Native函数库直接分配堆外内存,经过java堆中的DirectByteBuffer对象做为这块内存的引用进行操做。这样避免了在Java堆和Native堆中来回复制数据,提升性能。函数
注意:此部分的内存不受java堆大小的限制,收本机总内存的限制,配置虚拟机内存时,不可以忽略此处的内存,不然会致使动态扩展时出现OutOfMemoryError异常。高并发
new指令 --》检查指令参数可否在常量池中定位一个类的符号引用,这个符号表明的类是否已被加载、解析和初始化过。----》若是没有,必须先执行相应的类加载过程 -----》为新生对象分配内存布局
分配内存方式:指针碰撞(堆内存绝对规整)性能
空闲列表(堆内存不是规整的)spa
是否规整由采用的垃圾收集器是否带有压缩整理功能决定。线程
对象的频繁建立(高并发)解决方案:指针
方案一:同步处理,采用CAS配上失败重试,保证跟新操做的原子性;对象
方案二:内存分配的动做按照线程划分在不一样的空间之中进行。(本地线程分配缓冲 Thread Local Allocation Buffer ,TLAB)
---》虚拟机对对象进行必要的设置(该对象是哪一个类的实例,对象的哈希码值)
----》一个对象产生了(从虚拟机视角)
对象建立刚刚开始(从java程序的视角) ------<init>方法尚未执行。