目录 1.方法区内存大小设置 2.如何解决OOM问题?(了解) 1.方法区内存大小设置 1.方法区的大小可以不是固定的,JVM可以根据应用需要自动调整。a)JDK7及以前(了解):-XX:PermSize设置永久代初始大小。-XX ...
JVM加载类的时候,需要记录类的元数据,这些数据会保存在一个单独的内存区域内,在Java 里,这个空间被称为永久代 Permgen ,在Java 里,使用元空间 Metaspace 代替了永久代。永久代和元空间保存的数据并不完全一样,永久代中还保存另一些与类的元数据无关的杂项。 如我们之前的一篇文章 :字符串对象在JVM中是如何存放的中说的,在Java 里将字符串常量从永久代移动到了堆区域,但是 ...
2019-10-04 21:46 0 1398 推荐指数:
目录 1.方法区内存大小设置 2.如何解决OOM问题?(了解) 1.方法区内存大小设置 1.方法区的大小可以不是固定的,JVM可以根据应用需要自动调整。a)JDK7及以前(了解):-XX:PermSize设置永久代初始大小。-XX ...
前言 昨天谢照东大神在群里提出一个问题:怎么查看Metaspace里具体包含的是什么,起因是他的某个服务设置了-XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m,但是通过jstat -gcutil pid查看M的值为98(M ...
要分析JVM的源码,结合资料直接阅读是一种方式,但是遇到一些想不通的场景,必须要结合调试,查看执行路径以及参数具体的值,才能搞得明白。所以我们先来把JVM的源码进行编译,并能够使用GDB进行调试。 编译环境 本文使用的JDK版本:OpenJDK7,分支b147 下载页面:https ...
原创申明:本文由公众号【猿灯塔】原创,转载请说明出处标注 “365篇原创计划”第十四篇。 今天呢!灯塔君跟大家讲: JVM源码分析之JVM启动流程 前言: 执行Java类的main方法,程序就能运行起来,main方法的背后,虚拟机究竟发生了什么?如果你对这个感兴趣 ...
“365篇原创计划”第十二篇。 今天呢!灯塔君跟大家讲: JVM源码分析之synchronized实现 java内部锁synchronized的出现,为多线程的并发执行提供了一个稳定的环境,有效的防止多个线程 ...
原创申明:本文由公众号【猿灯塔】原创,转载请说明出处标注 “365篇原创计划”第十一篇。 今天呢!灯塔君跟大家讲: JVM源码分析之Java对象头实现 HotSpot虚拟机中,对象在内存中 ...
JVM源码分析之SystemGC完全解读 概述 JVM的GC一般情况下是JVM本身根据一定的条件触发的,不过我们还是可以做一些人为的触发,比如通过jvmti做强制GC,通过System.gc触发,还可以通过jmap来触发等,针对每个场景其实我们都可以写篇文章来做一个介绍,本文重点介绍下 ...
前言 什么是 CAS Java 中的 CAS JVM 中的 CAS 前言 在上一篇文章中,我们完成了源码的编译和调试环境的搭建。 鉴于 CAS 的实现原理比较简单, 然而很多人对它不够了解,所以本篇将从 CAS 入手,首先介绍 ...