随笔分类 - JVM
摘要:相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的认识。 在解决java内存溢出问题之前,需要对jvm(java虚拟机)的内存管理有一定的认识。jvm管理的内存大致包
阅读全文
摘要:Jconsole,Java Monitoring and Management Console。Jconsole是JDK自带的监控工具,在JDK/bin目录下可以找到。它用于连接正在运行的本地或者远程的JVM,对运行在java应用程序的资源消耗和性能进行监控,并画出大量的图表,提供强大的可视化界面。
阅读全文
摘要:一、JMX的定义 JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架。JMX是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和服务实现管理。这是官方文档上的定义,我看过很多次也无法很好的理解。我个人的理解是JMX让程序有被管理
阅读全文
摘要:JConsole基本介绍 Jconsole (Java Monitoring and Management Console),一种基于JMX的可视化监视、管理工具。JConsole 基本包括以下基本功能:概述、内存、线程、类、VM概要、MBean 运行下面的程序、然后使用JConsole进行监控;注
阅读全文
摘要:1、JVM的参数类型 1.1 标准参数:在各jdk版本中较稳定 -help-server -client-version -showversion-cp -classpath 1.2 X参数 1.2.1非标准化参数 1.2.2 -Xint:完全解释执行 调整为完全解释执行编译模式: MacBook-
阅读全文
摘要:一、垃圾回收算法1、标记—清除算法1)工作流程算法分为“标记”和“清除”阶段:首先标记出所有需要回收的对象(标记阶段),在标记完成后统一回收所有被标记的对象(回收阶段)。2)缺点a. 效率问题:标记和清除这两个过程的效率都不高。b. 空间问题:会产生大量的不连续碎片。2、复制算法(新生代垃圾回收算法
阅读全文
摘要:主要针对Java堆和方法区1、判断对象是否已“死”Java堆中存放着几乎所有的对象实例,垃圾回收器在对堆进行回收之前,首先应该判断这些对象哪些还“存活”,哪些已经“死亡”。(1)引用计数法A. 工作流程 给每个对象附加一个计数器,每当有一个地方引用此对象。计数器+1;每当有一个地方不再引用此对象,计
阅读全文
摘要:1、对象优先在Eden区分配大多数情况下,对象在新生代Eden区分配。当Eden区没有足够的空间进行分配时,虚拟机将发起一次Minor GC。虚拟机提供了 XX:+PrintGCDetails这个收集器参数,告诉虚拟机在发生垃圾回收时打印内存回收日志。并且在进程退出时输出当前的内存各区域分配情况。
阅读全文
摘要:一、概念 虚拟机:通过软件模拟的具有完整硬件功能的运行在一个完全隔离环境中的完整操作系统。 JVM:软件虚拟Java字节码指令集。 HoSpot是Java默认的虚拟机。 二、Java内存区域与内存溢出异常 Java虚拟机所管理的内存包括如下几个运行时数据区域: (1)线程私有区域(随线程的创建与销毁
阅读全文