![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
lin502
这个作者很懒,什么都没留下…
展开
-
JVM学习总结一——内存模型
一、JVM内存模型 JVM典型的内存模型如下图: 程序计数器线程私有学过组成原理的对这个一定很亲切,这里相当于JVM版的,作用是当前线程所执行的字节码的行号指示器,通俗讲就是记录当前正在执行字节码的位置,以便解释器能获取下一行字节码。虚拟机栈线程私有用于存储局部变量表(包括参数)、操作数栈、方法出口等信息,栈解决转载 2017-03-21 11:29:45 · 262 阅读 · 0 评论 -
JVM 诊断调优 CheatSheet
常用Shell命令查看网络状况netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'使用top去获取进程cpu使用率;使用/proc文件查看进程所占内存。#!/bin/bash for i in `ps -ef | e转载 2017-04-17 09:56:14 · 567 阅读 · 0 评论 -
JVM(7):JVM 调优 - 工具篇
16年的时候花了一些时间整理了一些关于jvm的介绍文章,到现在回顾起来还是一些还没有补充全面,其中就包括如何利用工具来监控调优前后的性能变化。工具做为图形化界面来展示更能直观的发现问题,另一方面一些耗费性能的分析(dump文件分析)一般也不会在生产直接分析,往往dump下来的文件达1G左右,人工分析效率较低,因此利用工具来分析jvm相关问题,长长可以到达事半功倍的效果来。jvm转载 2017-03-17 09:07:33 · 199 阅读 · 0 评论 -
JVM(6):JVM 调优 - 从 Eclipse 开始
概述什么是jvm调优呢?jvm调优就是根据gc日志分析jvm内存分配、回收的情况来调整各区域内存比例或者gc回收的策略;更深一层就是根据dump出来的内存结构和线程栈来分析代码中不合理的地方给予改进。eclipse优化主要涉及的是前者,通过gc日志来分析。本文主要是通过分析eclipse gc日志为例来示例如何根据gc日志来分析jvm内存而进行调优,像根据关闭eclipse启动转载 2017-03-16 09:09:24 · 242 阅读 · 0 评论 -
JVM(5):Tomcat 性能调优和性能监控(visualvm)
tomcat服务器优化1、JDK内存优化 根据服务器物理内容情况配置相关参数优化tomcat性能。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此一般建议堆的最大值设置为可用内存的最大值的80%。 Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大.Tom转载 2017-03-15 09:08:41 · 409 阅读 · 0 评论 -
JVM(3):Java GC 算法垃圾收集器
个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收。此方法简单,无法解决对象相互循环引用的问题。可达性分析(Reachability Analysis):从GC Roots开始向下搜索,搜索所走过的路径称为引用链。当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的。不可达对象。在Java语言中,GC Root转载 2017-03-14 13:07:32 · 201 阅读 · 0 评论 -
JVM(2): JVM 内存结构
所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实如果你经常解决服务器性能问题,那么这些问题就会变的非常常见,了解JVM内存也是为了服务器出现性能问题的时候可以快速的了解那块的内存区域出现问题,以便于快速的解决生产故障。先看一张图,这张图能很清晰的说明JVM内存结构布局转载 2017-03-14 13:00:12 · 139 阅读 · 0 评论 -
JVM(1):Java 类的加载机制
1、什么是类的加载类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。类加载器并不转载 2017-03-14 12:59:27 · 694 阅读 · 0 评论 -
JVM(4):JVM 调优 - 命令篇
运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole、大名鼎鼎的VisualVM,IBM的Memory Analyzer等等,但是在生产环境出现问题的时候,一方面工具的使用会有所限制,另一方面喜欢装X的我们,总喜欢在出现问题的时候在终端输入一些命令来解决。所有的工具几乎都是依赖于jdk的接口和底层的这些命令,研究这些命转载 2017-03-14 12:55:31 · 383 阅读 · 0 评论 -
JVM学习总结五——性能监控及故障处理工具
少公司都是犯忌讳的事吧,一般都是把heapdump导到本地处理。 这里就不介绍用法了,可自行谷歌里百度。6、jstack 看名字就知道是和栈相关的,而栈里边存的则是各个线程的私有数据(局部变量表、方法出口、操作数栈、对象引用等),因此该命令就是用来生成当前虚拟机的线程快照的(threaddump,可用来分析虚拟机某线程长时间挺对的原因,如死锁、死循环、资源请求时间过长等转载 2017-03-21 11:32:46 · 232 阅读 · 0 评论 -
JVM学习总结四——内存分配策略
之前几篇我们介绍了jvm的内存模型以及垃圾回收机制,而本篇我们将介绍几个JVM中对象在分配内存是应该遵循的策略。毕竟,想要去优化程序,不仅要考虑垃圾回收的过程,还要从对象内存分配的角度减少gc的代价。一、gc日志格式 在这里先介绍一下gc日志的格式,分析gc日志是了解gc过程最直接的方式。对于大量的日志分析,直接查看日志文件当然不方便,我们一般会使用日志分析工具,后边会有介绍,但转载 2017-03-21 11:32:03 · 291 阅读 · 0 评论 -
JVM学习总结三——垃圾回收器
整两天再看调优分析的部分,发现实际运行环境下,还是要考虑配置垃圾回收器,所以这里就加一小章介绍一下。 首先来看一下HotSpot所支持回收期的关系图: 图中可以看到一共有7中垃圾回收器,以中间绿线为界,上边三个用于年轻代,下边三个用在年老代,而G1则老少通吃,黑线线表示两个回收器可搭配使用,红线则表示两者可以在同一区域交替使用。由于G1在JDK1.7才达到商用级别,而且目前转载 2017-03-21 11:31:20 · 267 阅读 · 0 评论 -
JVM学习总结二——垃圾回收算法
昨天总结了JVM内存分区相关的知识,这次我们将来了解下JVM的另一个核心知识点——垃圾回收算法。这一部分其实并不太难,如果对操作系统的内存处理算法有所了解,那么这部分算法其实只看名字就能明白,两者在原理上是一样的,而且JVM的相对更为简单点。 在初学JVM的时候,我们往往会对这部分感到迷惑:网上不少博客介绍的五花八门,像引用计数算法、串行、并行、并发算法等,他们到底算不算垃圾回收算法,转载 2017-03-21 11:30:30 · 305 阅读 · 0 评论 -
编绎调试 HotSpot JVM 及在 Eclipse 里调试
编绎整个OpenJDK要很久,而且有很多东西是不需要的。研究HotSpot的话,其实只要下HotSpot部分的代码就可以了。下面简单记录下编绎调试HotSpot一些步骤。一、编绎进入hotsopt的make目录下:cd code/cpp/openjdk/hotspot/make/用make转载 2017-04-17 10:57:08 · 347 阅读 · 0 评论