内存的堆栈分析

Posted show58

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内存的堆栈分析相关的知识,希望对你有一定的参考价值。

一般说到内存指的是计算机的随机存储器(RAM),程序都是在这里面运行。
计算机内存的大致划分如下:
1:内存地址由上倒下依次增加

2:内存由上倒下依次分为以下几块:

内核虚拟内存:用户代码不可见的内存,地址空间顶部的区域,是为内核保留的。

: 维护虚拟地址的空间顶部是用户栈,编译器用它来实现函数调用。
  每次调用一个函数时栈会增长(方法中涉及大量的几部变量),
  从函数返回时栈会收缩。
  存储运行时的局部变量及const局部变量
  栈是连续的lifo(后进先出)的存取方式,地址从上到下逐渐增加。

共享库:大约在地址空间的中间部分,是一块用来存放标准库和数学库这样的共享库代码和数据的区域。
    如:printf函数等...

:运行时有malloc创建的运行时的堆。
  存放程序员申请的内存空间,如 new Array()
  堆是树状结构的无序的存储数据的方式。

程序代码和数据区:包括读/写数据和只读的代码和数据,对所有的进程来说,代码是从同一固定地址开始,
          紧接着的是和C全局变量相对应的数据位置。代码和数据区是直接按照可执行目标文件的
          内容初始化的。
        可读写区用于存储全局变量和静态变量 的数据
        只读区 存储代码
        可读写区用于存储用户的数据:地址连续存储

以上是关于内存的堆栈分析的主要内容,如果未能解决你的问题,请参考以下文章

Java内存泄漏分析系列之一:使用jstack定位线程堆栈信息

「JAVA」Java基础之堆栈方法区类加载器——JVM内存模型分析

使用dotTrace6.0进行性能,内存分析

Linux内核情景分析之异常访问,用户堆栈的扩展

45.JVM调优策略常见问题:内存泄漏(年老代堆空间被占满持久代被占满堆栈溢出线程堆栈满系统内存被占满)优化方法:优化目标优化GC步骤优化总结;案例分析(公司系统参数网上给的配置参数)

tomcat服务无响应堆栈分析