Java虚拟机
xiaofengnh
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JVM内存管理:深入Java内存区域与OOM
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。 概述: 对于从事C、C++程序开发的开发人员来说,在内存管理领域,他们即是拥有最高权力的皇帝又是执行最基础工作的劳动人民——拥有每一个对象的“所有权”,又担负着每一个对象生命开始到终结的维护责任。 对于Java程序员来说,不需要在为每一个new操作去写配对的delete转载 2014-02-13 19:02:42 · 429 阅读 · 0 评论 -
Java系列笔记(2) - Java RTTI和反射机制
目录 类加载器动态加载链接初始化示例 类加载器 在了解Java的机制之前,需要先了解类在JVM(Java虚拟机)中是如何加载的,这对后面理解java其它机制将有重要作用。 每个类编译后产生一个Class对象,存储在.class文件中,JVM使用类加载器(Class Loader)来加载类的字节码文件(.class),类加载器实质上是一条类加载器链,一般的,我们只会用到一个原生的类加载器转载 2017-04-26 19:34:21 · 334 阅读 · 0 评论 -
Java系列笔记(1) - Java 类加载与初始化
目录 类加载器动态加载链接初始化示例 类加载器 在了解Java的机制之前,需要先了解类在JVM(Java虚拟机)中是如何加载的,这对后面理解java其它机制将有重要作用。 每个类编译后产生一个Class对象,存储在.class文件中,JVM使用类加载器(Class Loader)来加载类的字节码文件(.class),类加载器实质上是一条类加载器链,一般的,我们只会用到一个原生的类加载器转载 2017-04-26 19:32:40 · 367 阅读 · 0 评论 -
Java系列笔记(4) - JVM监控与调优
目录 参数设置 收集器搭配 启动内存分配 监控工具和方法 调优方法 调优实例 光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之。通过学习,我觉得JVM监控与调优主要的着眼点在于如何配置、如何监控、如何优化3点上。下面就将针对这3点进行学习。 (如果您对Java的内存区域划分和内存回收机制尚不明确,那在阅读本转载 2017-04-26 19:29:58 · 856 阅读 · 1 评论 -
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解
JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。 现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程转载 2016-07-13 19:24:17 · 2421 阅读 · 0 评论 -
记一次JVM GC日志分析
这几天在准备升级JDK版本到1.6,对目前线上JVM(版本是1.5.0_08-b03) GC日志进行了分析,发现一些参数设置不太合理的地方,有待后续通过数据来进行验证。 1.原始GC日志(通过JVM配置GC Print参数获取GC日志) ... 695.775: [GC 695.776: [ParNew: 130944K->0K(131008K), 0.0174100 secs]转载 2014-09-29 15:46:54 · 435 阅读 · 0 评论 -
JDK动态代理实现原理
之前虽然会用JDK的动态代理,但是有些问题却一直没有搞明白。比如说:InvocationHandler的invoke方法是由谁来调用的,代理对象是怎么生成的,直到前几个星期才把这些问题全部搞明白了。 废话不多说了,先来看一下JDK的动态是怎么用的。 Java代码 package dynamic.proxy; import java.la转载 2014-09-29 18:37:22 · 403 阅读 · 0 评论 -
Java系列笔记(4) - JVM监控与调优
目录 参数设置 收集器搭配 启动内存分配 监控工具和方法 调优方法 调优实例 光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之。通过学习,我觉得JVM监控与调优主要的着眼点在于如何配置、如何监控、如何优化3点上。下面就将针对这3点进行学习。 (如果您对Java的内存区域划分和内存回收机制尚不明确,那在阅转载 2014-03-07 01:04:45 · 738 阅读 · 0 评论 -
Java系列笔记(3) - Java 内存区域和GC机制
目录 Java垃圾回收概况Java内存区域Java对象的访问方式Java内存分配机制Java GC机制垃圾收集器 Java垃圾回收概况 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢。这是因为在Ja转载 2014-03-06 23:22:56 · 428 阅读 · 0 评论 -
深入理解JVM—性能调优
在上文中我们分析了很多性能监控工具,介绍这些工具的目的只有一个,那就是找出对应的性能瓶颈。盲目的性能调优是没有效果的,只有充分知道了哪里出了问题,针对性的结果才是立竿见影的。解决了主要的性能问题,那些次要的性能问题也就不足为虑了! 我们知道,性能问题无非就这么几种:CPU、内存、磁盘IO、网络。那我们来逐一介绍以下相关的现象和一些可能出现的问题。 一、CPU过高。 查看CPU最简转载 2014-03-03 20:53:02 · 908 阅读 · 0 评论 -
jvm内存机制总结篇
近期看了看Java内存泄露的一些案例,跟原来的几个哥们讨论了一下,深入研究发现JVM里面还是有不少以前不知道的细节,这里稍微剖析一下。先看一看JVM的内部结构—— 如图所示,JVM主要包括两个子系统和两个组件。两个子系统分别是Class loader子系统和Execution engine(执行引擎) 子系统;两个组件分别是Runtime data area (运行时数据区域)组件和Na转载 2014-02-13 19:00:01 · 553 阅读 · 0 评论 -
图解JVM在内存中申请对象及垃圾回收流程
先看一下JVM的内存模型: 从大的方面来讲,JVM的内存模型分为两大块: 永久区内存( Permanent space )和堆内存(heap space)。 栈内存(stack space)一般都不归在JVM内存模型中,因为栈内存属于线程级别。 每个线程都有个独立的栈内存空间。 Permanent sp转载 2014-02-13 20:21:36 · 361 阅读 · 0 评论 -
深入垃圾收集器与内存分配策略
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。 概述: 说起垃圾收集(Garbage Collection,下文简称GC),大部分人都把这项技术当做Java语言的伴生产物。事实上GC的历史远远比Java来得久远,在1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言。当Lisp还在胚胎时期,转载 2014-02-13 20:20:40 · 384 阅读 · 0 评论 -
关于JVM结构的学习
JVM内部结构图 Java虚拟机主要分为五个区域:方法区、堆、Java栈、PC寄存器、本地方法栈。下面 来看一些关于JVM结构的重要问题。 1.哪些区域是共享的?哪些是私有的? Java栈、本地方法栈、程序计数器是随用户线程的启动和结束而建立和销毁的, 每个线程都有独立的这些区域。而方法区、堆是被整个JVM进程中的所有线程共享的。 2.方法区转载 2014-02-13 23:14:23 · 420 阅读 · 0 评论 -
JVM垃圾回收总结
垃圾回收包含的内容不少,但顺着下面的顺序捋清知识也并不难。首先要 搞清垃圾回收的范围(栈需要GC去回收吗?),然后就是回收的前提条件 如何判断一个对象已经可以被回收(这里只重点学习根搜索算法就行了), 之后便是建立在根搜索基础上的三种回收策略,最后便是JVM中对这三种 策略的具体实现。 1.范围:要回收哪些区域? Java方法栈、本地方法栈以及PC计数器随方法或线程的结转载 2014-02-13 22:43:54 · 420 阅读 · 0 评论 -
MAT使用
概述 对于大型 JAVA 应用程序来说,再精细的测试也难以堵住所有的漏洞,即便我们在测试阶段进行了大量卓有成效的工作,很多问题还是会在生产环境下暴露出来,并且很难在测试环境中进行重现。JVM 能够记录下问题发生时系统的部分运行状态,并将其存储在堆转储 (Heap Dump) 文件中,从而为我们分析和诊断问题提供了重要的依据。 通常内存泄露分析被认为是一件很有难度的工作,一般由团队中的资深人士进...转载 2019-03-28 20:29:39 · 290 阅读 · 0 评论
分享