`
ayufox
  • 浏览: 273583 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
文章列表
     本篇我们了解一下Java的栈内存空间。      1.我们首先从Intel80386架构下的Linux汇编开始,看看会把什么东西存放在栈中。在开始之前,需要注意一点,Intel80386架构下的linux系统的堆是从高位地址往低位地址增长的。      我们看一个简单的例子,计算从1加到100,文件存储为test.c int sum(int max); int test() { sum(100); } int sum(int max) { int result = 0; int i; for (i=1; i<=max; i+ ...
      除了一些基础的工具,随Sun JDK一起发布的还有一些可视化的分析工具,包括JConsole和在JDK6.0.7版本中引入的Visual VM。       1.JConsole:JConsole可以说是前面介绍的所有功能性JDK工具的一个可视化版本,几乎实现了JVM Manage API中提供的所有的功能。        1)连接        JConsole在JDK6中有两种连接方式,一种是使用Attach API连接到本地的进程上,另一种则需要被监控的JVM启动远程JMX Agent,在前面我们已经接触了Attach API的连接方式,这里我们使用远程的连接方式    ...
     Sun JDK随版本同时发布了一些性能剖析的工具,这些工具基本上都是基于JVM MangeAPI和Sun JVM Attach API实现,所以其能提供什么样的功能可以参见JVM Manage API 的说明。我们来了解一下:     一、功能性工具     1.jps:列出所有的JVM进程的进程ID和进程名字,实现原理可见Sun JVM Attach API     2.jinfo:打印JVM启动内部信息,譬如启动参数、JVM版本、操作系统信息等,具体可参见JVM Manage API的OperatingSystem和Runtime这两个Bean,本功能基于JVM Manag ...
     Sun JVM Attach API是Sun JVM中的一套非标准的可以连接到JVM上的API,从JDK6开始引入,除了Solaris平台的Sun JVM支持远程的Attach,在其他平台都只允许Attach到本地的JVM上。       一、Sun JVM Attach API功能上非常简单,仅提供了如下几个功能: 列出当前所有的JVM实例描述(知道JDK工具jps吗,列出所有的java进程的pid) Attach到其中一个JVM上,建立通信管道 让目标JVM加载Agent(还记得JVM TI吧,运行后加载的Agent)       二、通过几个实例简单地了解一下如上的 ...
      在前面的介绍中,我们看到JVM TI的强大功能,然而,对于不熟悉C/C++语言的Java程序员来说,这扇门是不是真的就完全关闭了呢?还好,在关上了门的同时,JVM为我们提供了另一扇窗——Java Instrutment。其实Java Instrutment只提 ...
     参考: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对外使用Java语言提供了一个JVM TI的功能子集的高级接口(并非所有JVM TI功能都可以通过JDI访问到)。需要注意的是,JDI实现上不会太多考虑性能上的问题,因此一般不会使用JDI来构建性能剖析相关工 ...
      参考: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 Tools Platform)的CPU Profiler和Memory Profiler,JVM TI的前身是JVM PI(JVM Profile Interface)和JVM DI(JVM Debug Int ...
      JPDA(Java Platform Debugger Architecture)提供了JVM内部的访问接口,让我们可以方便地了解JVM内部的状态,可以在此基础上构建调试、性能剖析的平台。       JPDA包括2个接口定义和1个通信协议: JVM TI(JVM Tool Interface):定义了 ...
       JVM本身提供了一组管理的API,通过该API,我们可以获取得到JVM内部主要运行信息,包括内存各代的数据、JVM当前所有线程及其栈相关信息等等。各种JDK自带的剖析工具,包括jps、jstack、jinfo、jstat、jmap、jconsole等,都是基于此API开发的。本篇对这部分内容进行一个详细的说明。        参考:http://java.sun.com/javase/6/docs/api/java/lang/management/package-summary.html 一、Management API        我们先看一下从Sun JVM我们可以 ...
       内存管理和垃圾回收是JVM非常关键的点,对Java性能的剖析而言,了解内存管理和垃圾回收的基本策略非常重要。本篇对Sun JVM 6.0的内存管理和垃圾回收做大概的描述。       1.内存管理       在程序运行过程当中,会创建大量的对象,这些对象,大部分是短周期的对象,小部分是长周期的对象,对于短周期的对象,需要频繁地进行垃圾回收以保证无用对象尽早被释放掉,对于长周期对象,则不需要频率垃圾回收以确保无谓地垃圾扫描检测。为解决这种矛盾,Sun JVM的内存管理采用分代的策略。       1)年轻代(Young Gen):年轻代主要存放新创建的对象,内存大小相对会比较 ...
      最近在学习Java性能剖析方面的主题,理论方面涉及Sun JVM内存管理和垃圾回收、JPDA技术、JVM manage API和Sun JVM Attach API(非标准),并熟悉了一些常用的JVM 剖析工具,包括Sun JDK自带的jps/jinfo/jstat/jstack/jmap/jhat/jconsole/VisualVM,以及一些开源的剖析工具包括Eclipse Memory Analyzer/Eclipse Profiler/Eclipse TPTP。       接下来计划写一系列的BLOG,对最近的学习做一个总结和回顾吧 Java性能剖析原理和工具 1. ...
1. SO_LINGER/ SO_REUSEADDR     TCP正常的关闭过程如下(四次握手过程): (FIN_WAIT_1) A       ---FIN--->       B(CLOSE_WAIT) (FIN_WAIT_2) A       <--ACK--       B(CLOSE_WAIT)   (TIME_WAIT)A        <--FIN----       B(LAST_ACK)   (TIME_WAIT)A        ---ACK->       B(CLOSED)     Ø  A端首先发送一个FIN请求给B端,要求关闭,发 ...
      我们知道,Sun JVM分代垃圾回收器把堆空间分成3块: Young Gen:年轻代,包括1个Eden区和2个Suvivor区,新创建的对象(大部分为短周期的对象)将进入这个区,虚拟机会频繁地对这个区进行垃圾回收。 Old Gen:年老代,当 ...
注:本篇基于以太网 0.准备工作 1)工具 Ethereal 0.99.0 : 抓包 wget : 避免多个HTTP产生干扰,使用wget来访问网页 2)准备/运行 关闭其他可能会产生网络请求的程序(如QQ) 清除ARP高速缓存:arp –d 清除本地dns缓存:ipconfig /flushdns 打开ethereal,去掉混编模式选项(把如下打勾去掉),开始抓包 访问:wget http://www.sina.com.cn 停止ethereal抓包   1.TCP/IP协议族 网络接口层(数据链路层):包括以太网协议和两个辅助协议:ARP(地址解析协 ...
一、    Realm/ HTTP认证 1)Realm Realm提供了Web认证用户和角色信息的存储机制,如下是Tomcat关于Realm的说明 A Realm is a read-only facade for an underlying security realm used to authenticate individual users, and identify the security roles associated with those users. Realms can be attached at any Container level, but will typi ...
Global site tag (gtag.js) - Google Analytics