摘要:
1、内存分析工具:Memory Analysis 2、jdk内存分析命令:jmap、jstack、jstat、jConsole、jvisualvm 3、代码监控:jprofiler 阅读全文
摘要:
1、访问地址:https://visualvm.github.io/pluginscenters.html,找到自己JDK版本对应的插件下载地址(我的JDK版本为1.7.0_67): 2、点击该链接进入如图界面,找到Visual GC插件,点击下载 3、打开Java VisualVM,工具——>插件 阅读全文
摘要:
一、工厂模式 只支持横向扩展,如增加新的产品。若需纵向扩展就会修改已有的产品代码。我们接口中心适配器就用的此模式,增加新xizang的车站client不会影响其他client,但是如果要增加接口,就会影响其他client。 二、抽象工厂模式 只支持纵向扩展,增加产品族容易,但是增加产品就会修改原有结 阅读全文
摘要:
一、类加载机制 类加载器将类的.class文件中的二进制数据读入到内存中,将其放在方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问 阅读全文
摘要:
以下配置主要针对分代垃圾回收算法而言。 一、堆大小设置 年轻代的设置很关键 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堆中内存是绝对完整的,用过和空闲的内存分别放在一边, 阅读全文