JVM
文章平均质量分 55
天地不仁以万物为刍狗
天之道,损有余而补不足
人之道,损不足以奉有馀
展开
-
学习笔记 --- JVM 堆外内存(off-heap)、堆内内存(on-heap)
堆内内存(on-heap)Java中分配的非空对象都是由Java虚拟机的垃圾收集器管理的,也称为堆内内存(on-heap memory)。虚拟机会定期对垃圾内存进行回收,在某些特定的时间点,它会进行一次彻底的回收(full gc)。彻底回收时,垃圾收集器会对所有分配的堆内内存进行完整的扫描,这意味着一个重要的事实——这样一次垃圾收集对Java应用造成的影响,跟堆的大小是成正比的。过大的堆会影响...原创 2018-12-04 10:15:19 · 1301 阅读 · 0 评论 -
JVM - 简单易懂的Java内存模型
Java虚拟机是Java工程师必学的进阶功课,这段时间开始死磕JVM。今天把JVM的基础知识点Java的内存模型怼清楚,废话不多说,干货走起!程序计数器是什么:程序计数器是很小的一块内存空间,它是当前线程所执行的字节码的行号指示器。有什么用:解释器通过这个计数器来选取下一条需要执行的字节码指令。存储什么内容:如果线程执行的是Java方法,存储的是正在执行的虚拟机字节码指令的地址;如果是...转载 2019-03-18 16:46:21 · 151 阅读 · 0 评论 -
JVM-JVM性能调优之生成堆的dump文件
最近因项目存在内存泄漏,故进行大规模的JVM性能调优,现把经验做一记录。JVM内存模型及垃圾收集算法1.根据Java虚拟机规范JVM将内存划分为:New(年轻代) Tenured(年老代) 永久代(Perm)其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过-XX:Pe...转载 2019-03-18 13:36:47 · 2857 阅读 · 0 评论 -
JVM - dump,常用启动参数,垃圾回收参数
java获取内存dump的几种方式1、获取内存详情:jmap -dump:format=b,file=e.bin pid这种方式可以用 jvisualvm.exe 进行内存分析,或者采用 Eclipse Memory Analysis Tools (MAT)这个工具2. 获取内存dump: jmap -histo:live pid这种方式会先出发fullgc,所有如果不希望触发f...原创 2019-02-20 16:49:28 · 3430 阅读 · 0 评论 -
JVM - Java8内存模型—永久代(PermGen)和元空间(Metaspace)
Metaspace(元空间)JDK1.7中,存储在永久代的部分数据就已经转移到了Java Heap或者是 Native Heap。但永久代仍存在于JDK1.7中,并没完全移除,譬如符号引用(Symbols)转移到了native heap;字面量(interned strings)转移到了java heap;类的静态变量(class statics)转移到了java heap。我们可以通过一段程...原创 2019-01-29 19:38:06 · 425 阅读 · 0 评论 -
Mark:JVM性能调优监控工具专题四:VisualVM基本篇之快照分析、监控GC、Eclipse集成
一、概述该专题将讲解如何使用VisualVM生成快照、以及如何对JVM的GC进行监控,最后举例说明如何将VisualVM和eclipse进行集成。二、快照功能我们可以使用 VisualVM 的快照功能生成任意个性能分析快照并保存到本地来辅助我们进行性能分析。快照为捕获应用程序性能分析数据提供了一个很便捷的方式因为快照一旦生成可以在任何时候离线打开和查看,也可以相互传阅。VisualVM...转载 2019-01-29 17:05:55 · 269 阅读 · 0 评论 -
Mark : JVM性能调优监控工具专题三:VisualVM基本篇之远程监控,监控Tomcat
一、概述这一专题继续说明VirsualVM怎样进行远程监控,怎样监控Tomcat。从前面的博客中可以知道,VisualVM在启动后,可以看到窗口左侧的”应用程序“栏中有”本地“,”远程“,”快照“三个项目。 “本地 ”下显示的是在 localhost 运行的 Java 程序的资源占用情况,如果本地有 Java 程序在运行的话启动 Java VisualVM 即可看到相应的程序名,点击程序名打开...转载 2019-01-29 16:53:29 · 215 阅读 · 0 评论 -
Mark : JVM性能调优监控工具专题二:VisualVM基本篇之监控JVM内存,CPU,线程
转载自: http://josh-persistence.iteye.com/blog/2233445(感觉写的非常棒,又担心以后找不到原文所以就转载过来用以保存)一、前言 上一个专题中讲述了JVM中自带的各种性能测试的小工具:包括jps,jstatck,jmap,jhat,jsats,hprofhttp://josh-persistence.iteye.com/blog...转载 2019-01-29 16:34:35 · 216 阅读 · 0 评论 -
Mark : 深入JVM 原理
深入JVM 原理(一)Java内存模型:http://blog.csdn.net/qq_34707744/article/details/79278169 深入JVM原理(二)Java对象访问模式: http://blog.csdn.net/qq_34707744/article/details/79279979 深入JVM原理(三)JVM 垃圾收集:http://blog.csdn.net/...转载 2019-01-29 13:39:58 · 156 阅读 · 0 评论 -
学习笔记 --- JVM JIT与JVM,编译器与解释器
JVM---包括解释器JVM:是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序。 java编译器只要面向JVM,生成JVM能理解的代码或字节码文件。Java源文件经编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过特定平台运行。 编译器Java语言写的...原创 2018-12-03 14:24:05 · 248 阅读 · 0 评论 -
学习笔记 --- JVM 堆溢出、栈溢出、永久代溢出、直接内存溢出
栈溢出(StackOverflowError) --- 递归引起 栈空间不足 --- 线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflowError堆溢出(OutOfMemoryError:Java heap space) --- 死循环,或者内存不够,创建对象时如果没有可以分配的堆内存 ...原创 2018-12-04 22:58:13 · 411 阅读 · 0 评论 -
JVM - 程序模拟 堆内存溢出, 栈内存溢出, 永久代内存溢出
总结:死循环 :堆内存溢出递归 :栈内存溢出Java虚拟机中描述了两种异常1、如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflowError异常;2、如果在虚拟机中无法申请到足够多的内存空间,将抛出OutOfMemoryError异常。我们都知道Java虚拟机各个内存区域(除了程序计数器)都有发生内存溢出的可能,但到底什么样的操作或程序才会...转载 2019-03-18 17:04:12 · 616 阅读 · 0 评论