`
michael8335
  • 浏览: 186798 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

查看内存堆栈

阅读更多
这个页面放在tomcat/webapps/ROOT/下可以查看内存堆栈,对于分析定位性能问题,很有效果
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8"%>
<%@ page import="java.util.Set"%>
<%@ page import="java.util.Map"%>
<%@ page import="java.util.Iterator"%>
<%
	if("127.0.0.1".equals(request.getRemoteHost()))
	{
		Map<Thread,StackTraceElement[]> threads = Thread.getAllStackTraces();
		Set keys = threads.keySet();
		Iterator iter = keys.iterator();
		while (iter.hasNext())
		{
			Thread t = (Thread)iter.next();
%>
=======================================================================
ID: <%=t.getId()%>
State: <%=t.getState()%>
<%= "\n"%>
<%
			StackTraceElement[] trace = threads.get(t);
			for(int i = 0 ;i < trace.length;i++)
			{
%>
<%= trace[i].toString()%>
<%= "\n"%>
<%
			}
		}
	}
%>


如果不是本地测试,请将 if("127.0.0.1".equals(request.getRemoteHost()))分支去掉,使用浏览器访问该页面,然后通过查看源文件查看内存堆栈情况
分享到:
评论

相关推荐

    易语言申请进程堆栈内存

    进程的堆栈内存管理是程序员必须理解和掌握的关键技能,特别是在低级编程或者系统级编程中。易语言,一种面向对象、简单易学的中文编程语言,也提供了对进程堆栈内存的操作支持。本文将详细解析"易语言申请进程堆栈...

    内存、堆栈详解

    ### 内存、堆栈详解 #### 一、内存分配器(Memory Allocator) 内存分配器是计算机程序中负责管理内存分配的重要组件。在本节中,我们将深入探讨内存分配器的工作原理及其在Go语言中的具体实现。 ##### 1.1 基于...

    内存堆栈分析工具MAT 64bit软件(Memory Analysis Tool)

    内存堆栈分析是Java应用程序性能优化的关键环节,尤其是在长期运行的服务中,内存泄漏可能导致系统资源耗尽,甚至引发服务崩溃。MAT(Memory Analyzer Tool)是一款强大的64位内存分析工具,由Eclipse基金会开发,专...

    Java堆栈内存分析笔记

    1. **JVisualVM**:这是JDK自带的一个强大的分析工具,可以实时监控堆和栈的状态,查看内存分配、GC活动以及线程状态。 2. **MAT (Memory Analyzer Tool)**:IBM开发的内存分析工具,能帮助定位内存泄漏,提供详细...

    查看WINDOWS环境各种资源((CPU、内存、句柄、加载dll、线程及堆栈等)

    查看WINDOWS环境各种资源((CPU、内存、句柄、加载dll、线程及堆栈等)

    STM32堆栈内存分析

    ### STM32堆栈内存分析 #### 一、引言 在嵌入式开发中,了解内存管理机制对于编写高效且可靠的程序至关重要。本篇文章主要针对STM32微控制器的堆栈内存进行深入分析,旨在帮助开发者理解STM32如何管理和使用内存...

    gflags x86 x64 堆栈溢出内存检测工具

    《gflags:x86与x64架构下的堆栈溢出内存检测工具详解》 在软件开发过程中,确保程序的稳定性和安全性至关重要。而堆栈溢出是导致程序崩溃和安全漏洞的常见原因之一。为了有效地检测和预防这类问题,开发者可以使用...

    STM32 堆栈检测示例

    堆栈是MCU内存中的一个区域,用于存储函数调用时的返回地址、局部变量和保存的寄存器值。当程序执行深度递归或创建大量线程时,堆栈可能会耗尽,导致堆栈溢出。堆栈溢出不仅可能覆盖其他数据,还可能导致系统崩溃...

    堆栈内存区别

    ### 堆栈内存区别详解 在计算机编程与运行环境中,堆栈(Heap vs Stack)是两种关键的数据存储区域,它们各自拥有独特的属性与管理方式,对于程序的性能与资源管理有着深远的影响。本文将深入解析堆栈的区别,探讨...

    堆栈与内存空间

    对堆栈和内存空间的详细描述,哪些是变量是在静态数据区分配的,动态分配是在堆上分配的

    易语言申请进程堆栈内存源码

    在易语言中,可以使用内置的命令来操作堆栈,例如申请、释放和查看堆栈空间。申请进程堆栈内存通常是为了在执行过程中动态分配空间,用于存储临时数据。这在函数调用、递归计算等场景下尤为常见。 易语言提供了丰富...

    查看堆栈的工具 jca.rar

    "查看堆栈的工具 jca.rar" 提供了一种方法来深入洞察应用程序的内部运作,特别是通过堆栈跟踪来诊断和解决问题。堆栈跟踪是记录程序执行过程中各线程活动的一种方式,它可以帮助开发者了解代码的执行流程,定位程序...

    CDMA软件介绍 程序内存和堆栈

    在CDMA终端开发中,程序内存和堆栈的管理至关重要,因为这些资源通常是有限的,尤其是在内存容量仅为8M或16M的设备上。针对这种情况,开发者需要谨慎对待内存的分配与使用,以防止系统崩溃。 首先,程序内存的需求...

    WinDbg preview 1.2103.1004.0 版本,亲测可用

    通过查看内存堆栈,可以追踪到导致问题的具体代码行。 2. **内核调试**:WinDbg支持对Windows操作系统内核进行调试,这对于解决驱动程序问题、系统崩溃或性能问题至关重要。它可以查看系统调用,检查内核模式对象的...

    Java堆栈分析服务器

    Java堆栈分析是Java应用程序性能调优的重要环节,特别是在服务器环境中,当CPU资源占用过高或者出现内存泄露等问题时,分析Java堆栈能够帮助我们找出问题的根源。在本例中,我们将通过一系列步骤来理解如何进行Java...

    关于堆栈、静态、动态内存的理解

    一个正常的程序在内存中通常分为程序段、数据端、堆栈三部分。程序段里放着程序的机器码、只读数据,这个段通常是只读,对它的写操作是非法的。数据段放的是程序中的静态数据。动态数据则通过堆栈来存放。 在内存中...

    TCPIP 通信协议堆栈报告内存已用完

    TCPIP 通信协议堆栈报告内存已用完,具体处理步骤,简单易学。

    介绍堆栈,线程 如何解决内存溢出

    在IT领域,堆栈和线程是两个至关重要的概念,特别是在多任务并行处理和内存管理方面。本文将深入探讨这两个主题以及如何解决内存溢出问题,以帮助你在笔试和面试中表现出色。 首先,我们来理解堆栈。堆栈是一种特殊...

    易语言源码易语言申请进程堆栈内存源码.rar

    易语言源码易语言申请进程堆栈内存源码.rar 易语言源码易语言申请进程堆栈内存源码.rar 易语言源码易语言申请进程堆栈内存源码.rar 易语言源码易语言申请进程堆栈内存源码.rar 易语言源码易语言申请进程堆栈内存...

    数据结构-顺序堆栈

    4. 查看堆栈顶部元素(Top):不移除地查看堆栈顶部元素。 5. 判断堆栈是否为空(IsEmpty):检查堆栈是否没有元素。 6. 获取堆栈大小(Size):返回堆栈中元素的数量。 7. 清空堆栈(Clear):删除所有元素,将堆栈...

Global site tag (gtag.js) - Google Analytics