JVM
文章平均质量分 90
我顶得了
这个作者很懒,什么都没留下…
展开
-
【JVM】内存模型、内置的检测工具、
JVM内置的检测工具:一般使用如下几种:jps: 返回当前操作系统中的所有JVM进程ID jps -l(输出包名.类名)jmap:查看当前JVM的内存情况 jmap -heap PID(查看PID的JVM的堆情况)jstack :查看当前JVM的线程栈情况,常用于解决线程卡死问题Java内存模型Java的内存模型主要定义JVM如何将变量存储到内存中,又如何将内存中的变量取回等细节。...原创 2020-02-29 11:48:03 · 189 阅读 · 0 评论 -
【JVM】OutOfMemoryError与StackOverflowError
一、虚拟机和本地方法Java栈溢出StackOverflowError:如果线程请求的栈深度大于虚拟机所允许的最大深度,会抛出StackOverFlow异常(比如递归的时候不写出口)//单线程状态下public class Test2 { private int length = 1; public void testLength(){ length++;...原创 2019-08-11 00:20:51 · 242 阅读 · 0 评论 -
Java强软弱虚引用
强引用:Test test1 = new Test();程序中普遍存在的,GC Roots独享指向的引用都属于强引用,只要当前对象被任意一个强引用指向,即便内存不够用也不能够回收此对象。软引用:public class Test4 { private static int _1MB = 1024 * 1024; private byte[] bigSize = new...原创 2019-08-12 18:56:31 · 252 阅读 · 0 评论 -
【JVM】垃圾回收策略
垃圾回收策略:主要针对线程共享内存(堆,方法区)1. 判断哪些对象需要回收:在回收前先需要判断对象是否存活引用计数法(Python,C++智能指针都用到了这些)给每个对象附加一个引用计数器,每当有一个引用指向当前对象,计数器 + 1,每当有引用不再指向当前对象,计数器值 - 1,任意时刻引用计数器值为 0 的对象就被标记为不再“存活”。缺点:无法解决循环引用问题(我中有你,你中有我...原创 2019-08-12 21:52:16 · 938 阅读 · 0 评论 -
【JVM】运行时数据区域划分
1. JVM简介JVM内存区域划分——分为6大区域1.1 线程私有内存:程序计数器、虚拟机栈、本地方法栈线程私有:指的是这三块区域生命周期与线程的生命周期相同,随着线程的创建而创建,线程的销毁而销毁,不同线程间的这三块内存彼此隔离。1. 程序计数器可以当做是当前线程正在执行的字节码行号指示器,这是唯一一块不会产生OOM(OutOfMemoryError)异常的区域。行号指示器:是用来...原创 2019-08-12 22:09:17 · 493 阅读 · 0 评论