
Java虚拟机
eff666
这个作者很懒,什么都没留下…
展开
-
Java虚拟机(七)——垃圾收集GC介绍
1、概述本文的目的是用简单的方式向你介绍GC。在学习GC前,应该知道一个技术名词:“stop-the-world“。无论你选择哪种GC算法,Stop-the-world都会发生。Stop-the-world意味着JVM停止应用程序,而去进行垃圾回收。当stop-the-world发生时,除了进行垃圾回收的线程,其他所有线程都将停止运行。被中断的任务将在GC任务完成后恢复执行。GC调优往往意味着减少s转载 2016-11-16 19:56:23 · 516 阅读 · 0 评论 -
Java内存泄漏详解
1、Java内存回收机制 不论哪种语言的内存分配方式,都需要返回所分配内存的真实地址,也就是返回一个指针到内存块的首地址。Java中对象是采用new或者反射的方法创建的,这些对象的创建都是在堆(Heap)中分配的,所有对象的回收都是由Java虚拟机通过垃圾回收机制完成的。GC为了能够正确释放对象,会监控每个对象的运行状况,对他们的申请、引用、被引用、赋值等状况进行监控,Java会使用有向图的方法进行原创 2017-05-07 16:11:57 · 627 阅读 · 0 评论 -
Java内存模型
1、概述多任务和高并发是衡量一台计算机处理器的能力重要指标之一。一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题,它代表着一秒内服务器平均能响应的请求数,而TPS值与程序的并发能力有着非常密切的关系。在讨论Java内存模型之前,先简单介绍一下计算机的内存架构。2、计算机内存架构由于计算机的存储设备与处理器的运算能力之原创 2017-03-26 21:06:35 · 1004 阅读 · 0 评论 -
Java虚拟机(四)——对象的创建、存储和定位
1、对象的创建 Java是一门面向对象的编程语言,Java 程序运行过程中无时无刻都有对象被创建出来,在语言层面上,创建对象(例如克隆,反序列化)通常仅仅是一个new关键字而已,例如下面的语句。Object obj = new Object();其实在在虚拟机中,当遇到上述语句时,其执行过程大致要经历下面几个阶段。1.1 类加载检查 虚拟机遇到一条new指令时,首先将去检查这个指令的参原创 2016-09-28 08:49:15 · 565 阅读 · 0 评论 -
Java虚拟机(五)——垃圾收集机制
1、垃圾回收介绍 Java虚拟机内存划分讲到了Java 内存运行时区域的各个部分,其中程序计数器,虚拟机栈,本地方法栈三个区域随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来是就已知了。因此这几个区域的内存分配和回收都具有确定性,在这几个区域就需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟原创 2016-10-11 08:43:31 · 3997 阅读 · 0 评论 -
java中类的加载顺序介绍(ClassLoader)
1、ClassNotFoundExcetpion 我们在开发中,经常可以遇见java.lang.ClassNotFoundExcetpion这个异常,今天我就来总结一下这个问题。对于这个异常,它实质涉及到了java技术体系中的类加载。Java的类加载机制是技术体系中比较核心的部分,虽然它和我们直接打交道不多,但是对其背后的机理有一定理解有助于我们排查程序中出现的类加载失败等技术问题。原创 2016-08-14 10:44:15 · 63227 阅读 · 10 评论 -
详解Java内存分配
1、内存分配 我们知道,一个Java程序是运行在JVM(Java Virtual Machine,Java虚拟机)上的,我们可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性。所以在学习Java内存分配原理的时候一定要牢记这一切都是在JVM中进行的,JVM是内存分配原理的基础与前提。原创 2016-08-14 09:55:11 · 567 阅读 · 0 评论 -
Java虚拟机(一)——Java内存区域划分
1、介绍 Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。1.1 内存区域 Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。Java虚拟机规范将JVM所管理的内存分为以下几个运行时数据区:程序原创 2016-09-27 08:50:21 · 2729 阅读 · 0 评论 -
Java虚拟机(二)——Java堆内存划分
1、堆内存介绍 对于大多数应用来说,Java堆(Java Heap)是Java 虚拟机所管理的内存中最大的一块。此内存区域的唯一目的就是存在对象实例,几乎所有的对象实例都在这里分配内存。这个区域也是Java垃圾收集器管理的主要区域,因此很多时候也被称为”GC堆”。所以堆内存非常重要,我们有必要去了解它的细节,这对我们深入了解Java 垃圾回收机制非常有帮助。2、堆内存划分 在 Java 中,堆被原创 2016-09-27 08:54:24 · 835 阅读 · 0 评论 -
Java虚拟机(三)——类加载机制
1、概述 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被Java虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 类从被加载到虚拟内存中开始,到卸载内存为止,它的整个生命周期包括了:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initializa原创 2016-09-28 08:44:43 · 573 阅读 · 0 评论 -
Java虚拟机(六)——内存溢出和内存泄露分析
关于内存溢出和内存泄露在我以前的博文Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式中做过大概介绍,此处在进行补充。 1、内存溢出 内存溢出:OOM(OutOfMemoryError)异常,即程序需要内存超出了虚拟机可以分配内存的最大范围。在Java 虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他区域都可能发生异常。2、内存溢出区域 常见的原创 2016-10-11 08:48:43 · 2750 阅读 · 0 评论 -
java内存泄漏
1、Java内存回收机制 不论哪种语言的内存分配方式,都需要返回所分配内存的真实地址,也就是返回一个指针到内存块的首地址。Java中对象是采用new或者反射的方法创建的,这些对象的创建都是在堆(Heap)中分配的,所有对象的回收都是由Java虚拟机通过垃圾回收机制完成的。GC为了能够正确释放对象,会监控每个对象的运行状况,对他们的申请、引用、被引用、赋值等状况进行监控,通过监控进行管理内存。原创 2017-05-28 08:18:59 · 466 阅读 · 0 评论