JVM
学习JVM,并做的记录
凹凸曼蓝博one
这个作者很懒,什么都没留下…
展开
-
工欲善其事必先利其器-JVM相关参数、命令、常用工具
注意:本文不做相关参数、命令、常用工具的演示。JVM参数大体上分为四类:1.标准参数 :就是不会随着jdk的版本不同而不同。如java -version、java -help 2.-X参数 :如 java -Xint -version、 java -Xmixed -version3.-XX参数:-XX:[+/-] :+就是开启 -就是关闭。比如: -XX:+UseG1GC 开启G...原创 2020-02-29 14:49:42 · 215 阅读 · 0 评论 -
简单理解JVM垃圾回收
文章目录如何判断一个对象是垃圾垃圾回收算法分代收集算法垃圾收集器相关知识总结如何判断一个对象是垃圾我们都知道了当堆中的区域没有足够内存去存放对象时就会触发垃圾回收,那么如何来判断一个对象是不是垃圾呢?1.引用计数法:一旦相互持有引用,就导致对象永远没法被回收例如:给对象定义一个引用计数器,当该对象被引用时该计数器就++,引用结束时就–。那么当垃圾回收时就会回收掉计数器为0的对象。...原创 2020-02-29 14:06:48 · 612 阅读 · 0 评论 -
简单理解JVM内存模型
回顾一下:前边的文章已经说过JVM分为五个区域,其中线程私有的区域(程序计数器,虚拟机栈,本地方法栈),线程共享的区域(堆heap,方法区Method Area)内存模型:非堆:也就是方法区Method AreaYoung区:Young区分为两大块,一个是Survivor区(S0+S1),一块是Eden区。 Eden:S0:S1=8:1:1Eden区:正常对象创建所在区域,大多数对象“...原创 2020-02-28 09:44:08 · 363 阅读 · 0 评论 -
一起学习JVM-内存结构-方法区(Method Area)(线程共享的区域)
文章目录方法区(Method Area)方法区(Method Area)定义: 存储了跟类相关的信息,如:成员变量、方法、构造器及常量池等。逻辑上是堆的一部分,但是具体的实现是不一样的。比如:oracle公司的Hotspot JVM在1.8之前方法区的实现叫永久代,就是使用堆的一部分作为方法区。而1.8之后方法区的实现叫元空间,使用的是本地内存也就是系统内存。特点: 1.所有Ja...原创 2020-01-29 09:12:29 · 716 阅读 · 1 评论 -
一起学习JVM-内存结构-堆(Heap)/堆内存的监视诊断(线程共享的区域)
堆(Heap)定义: 通过 new 关键字,创建对象都会使用堆内存特点:1.它是线程共享的,堆中对象都需要考虑线程安全的问题2.有垃圾回收机制堆内存溢出演示代码:设置启动参数堆内存为8M(-Xmx8m)/** * 演示堆内存溢出 java.lang.OutOfMemoryError: Java heap space * -Xmx8m */public class Demo1...原创 2020-01-07 10:03:15 · 843 阅读 · 0 评论 -
java线程运行诊断:揪出占用cpu高的线程,定位问题代码---get新技能
程序占用cpu高达99.9%?那么,怎么有效快速的定位是程序中的哪条线程出了问题,从而精确到具体是哪一行代码出了问题呢?今天就来get一手新技能,是时候开始装逼了。主要就针对windows系统和linux系统windows系统首先看一段代码,先假装不知道问题出在哪里啊:/** * 演示 cpu 占用过高 */public class Demo1_16 { public s...原创 2020-01-03 09:02:39 · 2450 阅读 · 0 评论 -
一起学习JVM-内存结构-程序计数器/虚拟机栈/本地方法栈(线程私有的区域)
学习JVM的第一天,首先先了解下JVM。什么是JVM?定义: JVM全称Java Virtual Machine(Java程序的运行环境(Java二进制字节码的运行环境))好处:1.一次编译,到处运行(跨平台)2.自动内存管理,垃圾回收功能3.数组下标越界检查4.多态比较: JVM,JRE,JDKJVM<JRE(JVM+基础类库)<JDK(JVM+基础类库+编译工具)...原创 2019-12-30 17:17:14 · 1527 阅读 · 1 评论