jvm原理及性能调优系列(自动内存管理机制)

JAVA内存区域和内存溢出异常

1、JAVA运行时数据区如下图

  

  程序计数器:当前线程正在执行的代码的行号指示器。是线程私有的。它是JAVA虚拟机唯一没有指定OutOfMerroryError异常的区域。

  虚拟机栈:是线程私有的。描述的是Java方法执行时的内存模型。每个方法被创建时,会创建一个栈帧,用于存储局部变量表、操作表、方法出口等信息。

  本地方法栈:其发挥的作用与虚拟机栈类似。不同的是虚拟机栈为虚拟机方法服务,本地栈位为虚拟机使用到的Native方法服务。

  Java堆:被所有线程共享的一块区域。对象的实例及实例都在堆上分配。

  

  

时间: 2024-10-14 16:51:02

jvm原理及性能调优系列(自动内存管理机制)的相关文章

jvm原理及性能调优系列(jvm调优)

个人认为jvm调优主要通过以下方法解决 1.设置合适的最大堆内存(新生代和老生代的最大和值)和最小堆内存(jvm启动时占用的操作系统内存大小),及设置好堆的比例分配. 2.设置合适的新生代 因为对其对系统性能和GC回收有一定的影响. 3.设置合适的持久代 因为其直接决定系统可以支持多少个类定义和多少个常亮. 4.设置合适的线程栈 否则系统可能因为线程所需资源和空间不够而异常退出.

jvm原理及性能调优系列(调优工具)

 Linux命令行工具: 1.TOP命令:能够显示系统各个进程占用资源状况. 2.SAR命令:能够周期性地对系统CPU和内存采样. 3.VMSTATE命令:它可以统计CPU和内存使用情况和SWAP使用信息,也可以周期性地统计信息. 4.IOSTAT命令:提供详尽的IO信息 5.PIDSTAT命令:不但可以检测进程,还能够检测线程.  windows检测工具: 1.任务管理器 2.Perfmon性能工具 3.Process Exploer 4.PSLIST JDK工具: 1.JPS 列出java的

JVM原理和性能调优

JVM工作原理和特点主要是指操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境. 1.创建JVM装载环境和配置 2.装载JVM.dll 3.初始化JVM.dll并挂界到JNIENV(JNI调用接口)实例 4.调用JNIEnv实例装载并处理class类. 在我们运行和调试Java程序的时候,经常会提到一个JVM的概念.JVM是Java程序运行的环境,但是他同时一个操作系统的一个应用程序一个进程,因此他也有他自己的运行的生命周期,也有自己的代码和数据空间. 首先来说

IOS性能调优系列:使用Zombies动态分析内存中的僵尸对象

硬广:<IOS性能调优系列>第四篇,预计会有二十多篇,持续更新,欢迎关注. 前两篇<IOS性能调优系列:Analyze静态分析>.<IOS性能调优系列:使用Instruments动态分析内存泄漏>关注了内存泄露的问题,本篇正好相反,关注的是内存中那些被过度释放的对象(overreleased objects). 这篇的标题纠结了半天,到底是写EXC_BAD_ACCESS错误调试,还是写内存中僵尸对象的分析,最后还是选了个Duang~Duang~的标题. 今天在论坛上看到

IOS性能调优系列:使用Instruments动态分析内存泄漏

硬广:<IOS性能调优系列>第二篇,持续更新,欢迎关注. 第一篇介绍了Analyze对App做静态分析,可以发现应用中的内存泄漏问题,对于有些内存泄漏情况通过静态分析无法解决的,可以通过动态分析来发现,分析起来更有针对性. 从本篇开始介绍XCode提供的强大的分析工具Instruments,内存分析只是Instruments中的一个功能,其他功能后续介绍. 使用Instruments动态分析内存泄漏 Instruments中的Leaks功能主要用于分析内存泄漏,还是以<IOS性能调优系列

IOS性能调优系列:使用Time Profiler发现性能瓶颈

硬广:<IOS性能调优系列>第五篇,预计会有二十多篇,持续更新,欢迎关注. 之前四篇都是关注于内存方面,分析了内存泄漏.僵尸对象.内存分配,本篇介绍Time Profiler工具的使用,开始真正的“性能”调优之旅. Time Profiler还有之前介绍过的Leaks.Allocations工具,被戏称为Instruments的救命三招,是当应用遇到问题时首先应当使用的三个工具. Time Profiler帮助我们分析代码的执行时间,找出导致程序变慢的原因,告诉我们“时间都去哪儿了?”. 在使

IOS性能调优系列:Analyze静态分析

目前关于IOS性能优化的教程较少,决定写一个<IOS性能调优系列>,主要关注与内存泄漏.性能优化.流量和电量分析几个方面. XCode已经提供了非常强大的性能调优工具,结合几个第三方工具和一些技巧,进行性能优化非常简单. 第一篇先写写最简单的,Analyze静态分析. 相信IOS开发者在App进行Build或Archive时,会产生很多编译警告,这些警告是编译时产生的,静态分析的过程也类似,在XCode Product菜单下,点击Analyze对App进行静态分析. Analyze主要分析以下

IOS性能调优系列:使用Allocation动态分析内存使用情况

硬广:<IOS性能调优系列>第三篇,持续更新,欢迎关注. <IOS性能调优系列:Analyze静态分析>介绍了使用静态分析方法查找IOS内存泄漏的方法,<IOS性能调优系列:使用Instruments动态分析内存泄漏>讲解了使用Instruments的Leaks工具动态分析内存泄漏. 这两篇都是关注于内存泄漏的,是内存调优首先要关注的方面. 关于内存的问题,除了内存泄漏以外,还可能存在内存不合理使用的情况,也会导致IOS内存警告. 内存的不合理使用往往比内存泄漏更难发现

sql server 性能调优之 逻辑内存消耗最大资源分析1 (自sqlserver服务启动以后)

原文:sql server 性能调优之 逻辑内存消耗最大资源分析1 (自sqlserver服务启动以后) 一.概述 IO 内存是sql server最重要的资源,数据从磁盘加载到内存,再从内存中缓存,输出到应用端,在sql server 内存初探中有介绍.在明白了sqlserver内存原理后,就能更好的分析I/O开销,从而提升数据库的整体性能. 在生产环境下数据库的sqlserver服务启动后一个星期,就可以通过dmv来分析优化.在I/O分析这块可以从物理I/O和内存I/O二方面来分析, 重点分