![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java内存分配和垃圾回收
文章平均质量分 77
记录虚拟机在运行时的内存分配机制和垃圾回收机制
秃头洗头用飘柔
自强不息 明治高远
展开
-
java常见的一些垃圾收集器
垃圾收集器概述垃圾:在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。垃圾回收期:垃圾收集器就是负责在指定的情况下去回收这些垃圾,评估回收器的性能指标:吞吐量:运行用户代码的时间占运行时间的比例垃圾收集开销:吞吐量的补数,垃圾收集器占总运行时间的比例暂停时间:执行垃圾收集时,程序的工作线程被暂停的时间收集频率:相对应用程序的执行,收集操作发生的频率内存占用:java堆区所占内存的大小现在的标准:在最大吞吐量优先的情况下,降低停顿时间几款常见的垃圾回收器串原创 2021-01-28 17:04:07 · 712 阅读 · 0 评论 -
虚拟机运行时数据区堆,栈,方法区(下篇)
虚拟机运行时数据区堆,栈,方法区(下篇)铁汁们,可以先去看看上篇哟点击传送概述在上篇简单概述了虚拟机运算时数据区里的 pc寄存器,本地方法栈,虚拟机栈,以及虚拟机栈里栈帧的结构,这些都是属于线程的私有空间,每个线程都会有这些结构,但是下篇讲的堆和方法区是所有线程共享的。内存图示堆在堆中内存被分为两大块,分别是年轻代(YongGen)和老年代(OldGen),他们都是用来存储java对象的,但是在jvm中java对象被分为两类:第一类是生命周期较短,朝生夕死的那类对象,这类对象的创建和消亡都非常原创 2021-01-07 19:01:34 · 149 阅读 · 1 评论 -
虚拟机运行时数据区 堆,栈,方法区(上篇)
运行时数据区内存分布(上篇)堆和方法区下篇讲概述我们运行一个所谓的java程序,其实就是开启了一个虚拟机的进程,那这个虚拟机在程序运行时虚拟机里跟程序运行相关的内存结果有哪些呢。图示如图所示,相信平时大家也接触过内存图,但大部分都是堆,栈,方法区,其他的结构听说的相对性就会比较少。每个线程都有自己独立的虚拟机栈,本地方法栈,程序计数器就是图上灰色的结构,但是方法区和堆是多线程共享的。就是说灰色部分每个线程一份,可以有多份,但是红色部分就每个虚拟机只有一份了。图示先讲这些共享的结构pc寄原创 2020-12-30 18:10:07 · 171 阅读 · 0 评论 -
双亲委派机制和沙箱安全机制
双亲委派机制和沙箱安全机制如果对类加载器没有了解的可以先看我另一篇文章讲得是类加载器点击传送概述为什么需要双亲委派机制和沙箱安全机制,举个栗子,如果说我们任何人都可以在项目里去定义一个java.lang包下的String类进行使用的话,就说明java核心的API可以被随意篡改。这样即不安全,也不规范了。双亲委派机制工作原理:如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给自己的父类加载器去执行,如果父类加载器存在父类则进一步向上进行委托,依次递归,最终到达顶层启动类加原创 2020-12-30 17:25:29 · 1257 阅读 · 9 评论 -
简单了解java的类加载器
类加载器提问我们平时自己所写的类文件是怎么被加载的,又或者说是被哪个类加载器所加载,还有那些已经被定义好的的类呢(比如String)?类加载器概述虚拟机支持两种类型的类加载器,分别是引导类加载器(Bootstrap ClassLoader),和自定义类加载器(User-Defined ClassLoader)。从概念上讲自定义加载器一般指程序开发中由开发人员自定义的一类类加载器,但java虚拟机规范里是将所有派生于抽象类ClassLoader类加载器都划分为自定义加载器。但是无论加载器如何划分在原创 2020-12-30 16:39:05 · 119 阅读 · 0 评论