对象的实例化
对象创建的方式
1、new:最常见的方式、单例类中调用getInstance的静态类方法,XXXFactory的静态方法
2、Class的newInstance方法:在JDK9里面被标记为过时的方法,因为只能调用空参构造器,并且权限必须为 public
3、Cons...
2年前 (2022-10-20) 919℃
1喜欢
概述
我们希望能描述这样一类对象:当内存空间还足够时,则能保留在内存中;如果内存空间在进行垃圾收集后还是很紧张,则可以抛弃这些对象。
针对这个需求在JDK1.2版之后,Java对引用的概念进行了扩充,将引用分为:
强引用(Strong Reference)
软引用(Soft R...
2年前 (2022-10-20) 1042℃
1喜欢
G1总结
现在互联网的项目,基本都是使用G1垃圾回收器。
原因如下
G1和JDK1.8默认的Parallel+SerialOld垃圾收集器对比
回收性能
PS+SerialOld:超过32G内存回收时,Serial Old老年代单线程性能堪忧,出现老年代GC基本宣告应用死刑!
G...
2年前 (2022-10-08) 2720℃
1喜欢
垃圾回收器概述
垃圾收集机制是Java的招牌能力,极大地提高了开发效率。GC垃圾收集器是和JVM一脉相承的,它是和JVM进行搭配使用,在不同的使用场景对应的收集器也是有区别
7种经典的垃圾收集器:
串行回收器:Serial、Serial old
并行回收器:ParNew、Par...
2年前 (2022-10-08) 2405℃
0喜欢
垃圾回收算法概述
垃圾回收算法主要分为两个阶段,分别是标记阶段和清除阶段
垃圾标记阶段:主要是为了判断对象是否存活
1、在堆里存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为己经死亡的对象,GC才会在...
2年前 (2022-10-06) 1054℃
1喜欢
JVM内存结构位置
虚拟机栈概述
Java虚拟机栈是什么
Java虚拟机栈(Java Virtual Machine Stack),早期也叫Java栈。每个线程在创建时都会创建一个虚拟机栈,其内部保存一个个的栈帧(Stack Frame),对应着一次次的Java方法调用,栈是线...
2年前 (2022-09-27) 2154℃
2喜欢
堆、栈、方法区的交互关系
下面涉及了对象的访问定位
1、Person 类的 .class 信息存放在方法区中
2、person 变量存放在 Java 栈的局部变量表中
3、真正的 person 对象存放在 Java 堆中
4、在 person 对象中,有个指针指向方法区中的 pe...
2年前 (2022-09-27) 1135℃
0喜欢
JVM内存结构位置
对于JAVA应用程序来说,Java堆(Java Heap)是虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的 唯一目的就是存放对象实例,Java世界里“几乎”所有的对象实例都在这里分配内存。
在《J...
2年前 (2022-09-27) 816℃
0喜欢
JVM内存结构位置
本地方法接口
1、简单地讲,一个本地方法是一个Java调用非Java代码的接囗,本地方法是这样一个Java方法:该方法的实现由非Java语言实现,比如C。这个特征并非Java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern 告知C...
2年前 (2022-09-27) 1060℃
0喜欢
JVM内存结构位置
程序计数器介绍
程序计数器是记录着当前线程所即将执行的字节码指令行号
每一个线程都拥有自己的计数器
执行java方法时,程序计数器是有值的
执行native本地方法时,计数器值为空
它是唯一一个在Java虚拟机规范中没有规定任何OutofMemoryErr...
2年前 (2022-09-27) 1015℃
0喜欢