02 2018 档案
摘要:以下配置主要针对分代垃圾回收算法而言。 一、堆大小设置 年轻代的设置很关键 JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。在Windows
阅读全文
摘要:一、垃圾回收日志说明 [GC[DefNew: 7307K->494K(9216K), 0.0043710 secs] 7307K->6638K(19456K), 0.0044894 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] 1、日志开发的“[
阅读全文
摘要:一、标记-清除算法 算法:分为标记和清除两个阶段,首先标记出所有需要回收的对象,再对标记对象进行回收。 不足之处:效率不高,会产生大量不连续内存碎片,导致下次分配较大内存时,若内存不足不得不触发垃圾回收操作。 此算法为最基础算法,其他算法都是在此算法基础上改进而得到的。 二、复制算法 算法:将可用内
阅读全文
摘要:一、垃圾回收器回收的对象 虚拟机内存区域中程序计数器、虚拟机栈、本地方法栈随线程而生,随线程而灭。这3个区域内存分配和回收都具备确定性。因此不需要过多考虑回收问题。 而Java堆和方法区不一样,这部分内存的分配和回收都是动态的,垃圾回收器所关注的就是这两部分区域。 二、如何判断对象需要回收 1、引用
阅读全文
摘要:一、Java堆溢出 测试代码: 执行结果: 针对这类异常,可通过分析工具(如Eclipse Memory Analyzer)对异常快照进行分析,找到具体发生异常代码。 二、虚拟机栈和本地方法栈的溢出 由于HotSpot虚拟机不区分虚拟机栈和本地方法栈,因此不需要设置-Xoss参数,栈容量只由-Xss
阅读全文
摘要:一、对象的创建 1、类加载: 虚拟机在遇到一条new指令时候,检查类是否已被加载、解析、初始化过,如果没有,则执行类加载过程。 2、分配内存:类加载完成后,则为新对象从java堆上分配内存,分配内存有两种方式:指针碰撞和空闲列表 指针碰撞 Java堆中内存是绝对完整的,用过和空闲的内存分别放在一边,
阅读全文