JVM
potato123
这个作者很懒,什么都没留下…
展开
-
JVM内存管理和垃圾回收
Java虚拟机的一个强大之处在于其提供垃圾自动回收,对开发人员掩盖了内存分配和回收的细节。本篇将探索JVM的内存分配和垃圾回收机制,以在内存分析实战中提供一些理论和实践参考。1. 从理论开始1.1.垃圾检测任何虚拟机的回收算法都包括两个步骤:检测垃圾和回收垃圾。当一个对象被创建时,其是活动的对象,此时其是可用的,而在运行过程中,该对象的引用不再被使用,这时该对象就成为垃圾,一般采用两种...2008-07-13 22:42:36 · 92 阅读 · 0 评论 -
JVM Java HeapSpace到达临界值的高CPU问题
本周有同事反馈,IDC环境出现了CPU非常高的问题,如下图: 看一下HeapSpace的情况,如下图,很明显,HeapSpace已经到达了一个临界值: 看一下GC数据统计,短短1个小时,竟然FullGC了946次: 猜想:在HeapSpace逼近临界值的时候,分配小块内存(譬如创建一个对象,如果是分配大块内存...2010-08-08 18:50:28 · 284 阅读 · 0 评论 -
JNI——小心,内存怪兽出没
最近有一个同事碰到一个很诡异的问题,一个JVM使用默认的启动参数(suse linux 64),内存竟然会一直增涨到4G,而通过jmap dump出来的heap空间只有80多M,jmap dump出来的Alive heap空间则竟然只有几M,到底内存是怎么被吃掉的呢? 惯例,在目标JVM上启动BlackStar的JMX Proxy(维持现场,不需要重启动目标JVM),我们...2010-07-29 06:55:14 · 701 阅读 · 0 评论 -
Sun JVM Memory&GC参数配置
参考:《Memory Management in the Java HotSpot™ Virtual Machine》《Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning》《Garbage Collector Ergonomics》一、 理论基础参见《[Java性能剖析]Sun...原创 2010-05-06 05:56:38 · 224 阅读 · 0 评论 -
[Java性能剖析] TPTP性能剖析介绍
TPTP(Test & Performance Tool Platform)是Eclipse的又一测试/性能剖析的力作,本篇重点关注远程JVM的性能剖析功能。 1.我们先看一下TPTP性能剖析的主要结构: 1)对于性能剖析,会有一个ProfileAgent伴随JVM一起启动 2)对于每台物理服务器,会有一个AgentControler,A...2010-05-01 23:00:04 · 934 阅读 · 0 评论 -
[Java性能剖析]Eclipse Memory Analyzer介绍
Eclipse Memory Analyzer是一个非常棒的堆内存分析工具,是JDK自带的堆分析工具jhat的一个非常好的替代品,能够快速地定位Java内存泄露的原因。 可能有的同学会问,JVM不是号称自动内存管理,GC会自动垃圾回收,Java怎么会有内存泄露,不会搞错吧?当然不会^_^, Java的内存泄露不同于C/C++的内存泄露,C/C++的内存泄露是由于使用了堆内...2010-05-01 08:48:56 · 162 阅读 · 0 评论 -
Java 栈内存介绍
本篇我们了解一下Java的栈内存空间。 1.我们首先从Intel80386架构下的Linux汇编开始,看看会把什么东西存放在栈中。在开始之前,需要注意一点,Intel80386架构下的linux系统的堆是从高位地址往低位地址增长的。 我们看一个简单的例子,计算从1加到100,文件存储为test.cint sum(int max);int test(){...2010-04-30 23:01:06 · 159 阅读 · 0 评论 -
[Java性能剖析]Sun JDK可视化性能剖析工具介绍
除了一些基础的工具,随Sun JDK一起发布的还有一些可视化的分析工具,包括JConsole和在JDK6.0.7版本中引入的Visual VM。 1.JConsole:JConsole可以说是前面介绍的所有功能性JDK工具的一个可视化版本,几乎实现了JVM Manage API中提供的所有的功能。 1)连接 JConsole在JDK6中有两...2010-04-29 22:51:23 · 111 阅读 · 0 评论 -
[Java性能剖析]Sun JDK基本性能剖析工具介绍
Sun JDK随版本同时发布了一些性能剖析的工具,这些工具基本上都是基于JVM MangeAPI和Sun JVM Attach API实现,所以其能提供什么样的功能可以参见JVM Manage API的说明。我们来了解一下: 一、功能性工具 1.jps:列出所有的JVM进程的进程ID和进程名字,实现原理可见Sun JVM Attach API 2.jin...2010-04-29 13:40:31 · 99 阅读 · 0 评论 -
[Java性能剖析]Sun JVM Attach API
Sun JVM Attach API是Sun JVM中的一套非标准的可以连接到JVM上的API,从JDK6开始引入,除了Solaris平台的Sun JVM支持远程的Attach,在其他平台都只允许Attach到本地的JVM上。 一、Sun JVM Attach API功能上非常简单,仅提供了如下几个功能:列出当前所有的JVM实例描述(知道JDK工具jps吗,列出所有的...2010-04-29 07:11:27 · 324 阅读 · 0 评论 -
[Java性能剖析]JPDA 4)Java Instrutment
在前面的介绍中,我们看到JVM TI的强大功能,然而,对于不熟悉C/C++语言的Java程序员来说,这扇门是不是真的就完全关闭了呢?还好,在关上了门的同时,JVM为我们提供了另一扇窗——Java Instrutment。其实Java Instrutment只提供了JVM TI中非常小的一个功能子集,一个是允许在类加载之前,修改类字节(ClassFileTransformer)(JDK5...2010-04-28 21:42:13 · 218 阅读 · 0 评论 -
[Java性能剖析]JPDA 3)JDI/Debuger
参考:http://java.sun.com/javase/6/docs/jdk/api/jpda/jdi/index.html JDI(Java Debug Interface)为Java调试器的开发提供了标准的接口,我们可以通过此构建标准的Java调试器。如JPDA架构图所示,通过Front-end、Transport(交互机制)和Back-end的交互,JDI对外使...2010-04-28 13:17:47 · 187 阅读 · 0 评论 -
[Java性能剖析]JPDA 2)JVM TI
参考:http://java.sun.com/javase/6/docs/platform/jvmti/jvmti.html JVM通过JVM TI为外部访问JVM内部状态定义了标准的服务,基本上各种性能剖析工具都是基于JVM TI及其前身JVM DI/JVM PI开发的,包括Visual VM、Eclipse TPTP(Test and Performance Tool...2010-04-28 07:03:09 · 199 阅读 · 0 评论 -
[Java性能剖析]JPDA 1)总体结构
JPDA(Java Platform Debugger Architecture)提供了JVM内部的访问接口,让我们可以方便地了解JVM内部的状态,可以在此基础上构建调试、性能剖析的平台。 JPDA包括2个接口定义和1个通信协议:JVM TI(JVM Tool Interface):定义了JVM提供给外部可以访问的服务,此接口以C/C++的方式提供。利用JDK5开始...2010-04-27 06:31:15 · 111 阅读 · 0 评论 -
[Java性能剖析]JVM Management API
JVM本身提供了一组管理的API,通过该API,我们可以获取得到JVM内部主要运行信息,包括内存各代的数据、JVM当前所有线程及其栈相关信息等等。各种JDK自带的剖析工具,包括jps、jstack、jinfo、jstat、jmap、jconsole等,都是基于此API开发的。本篇对这部分内容进行一个详细的说明。 参考:http://java.sun.com/javas...2010-04-26 13:52:29 · 249 阅读 · 0 评论 -
[Java性能剖析]Sun JVM内存管理和垃圾回收
内存管理和垃圾回收是JVM非常关键的点,对Java性能的剖析而言,了解内存管理和垃圾回收的基本策略非常重要。本篇对Sun JVM 6.0的内存管理和垃圾回收做大概的描述。 1.内存管理 在程序运行过程当中,会创建大量的对象,这些对象,大部分是短周期的对象,小部分是长周期的对象,对于短周期的对象,需要频繁地进行垃圾回收以保证无用对象尽早被释放掉,对于长周期对...2010-04-24 18:39:06 · 93 阅读 · 0 评论 -
[Java性能剖析]前言
最近在学习Java性能剖析方面的主题,理论方面涉及Sun JVM内存管理和垃圾回收、JPDA技术、JVM manage API和Sun JVM Attach API(非标准),并熟悉了一些常用的JVM 剖析工具,包括Sun JDK自带的jps/jinfo/jstat/jstack/jmap/jhat/jconsole/VisualVM,以及一些开源的剖析工具包括Eclipse Memo...2010-04-24 06:01:41 · 71 阅读 · 0 评论 -
DCE VM HotSwap增强
我们知道,在SunHotSpot JVM的debug模式下,我们可以修改方法body的代码而不需要重启JVM,但是这种修改在当前的JVM版本中是有限制的,即不能动态增加/删除成员变量,也不能动态增加/删除/修改方法定义。 DynamicCode Evolution V...2011-03-13 19:16:17 · 430 阅读 · 0 评论