6、JVM

java 虚拟机里面的内容这篇文章大概能介绍个百分之七十,后面会继续深入补充了解

Java 内存区域详解 | JavaGuide

 

如何解决内存泄露问题

 

内存泄露是指对象占有空间而没办法正常释放空间造成内存泄露。java虚拟机本身有垃圾回收机制,但还是会存在内存泄露问题,归根到底是我们编程不规范的问题。

 

1、如果要释放对象,就必须使其的引用记数为0,只有那些不再被引用的对象才能被释放,

 

2、不同情况,比如:数据库连接(dataSourse.getConnection()),网络连接(socket)和io连接,以及使用其他框架的时候,除非其显式的调用了其close()方法(或类似方法)将其连接关闭,否则是不会自动被GC回收的。其实原因依然是长生命周期对象持有短生命周期对象的引用。比如ThreadLocal,用remove().

 

3、运行GC的函数是System.gc(),调用后启动垃圾回收器开始清理;以及一些清理工作,我们可以放到finalize()中

Java类加载器

jdk自带了三个类加载器:bootstrapClassLoader、ExtClassLoader、AppClassLoader.

bootstrapClassLoader:负责加载%java_home%lib下的jar包和class文件。

ExtClassLoader:负责加载%java_home%lib下ext文件夹下的jar包和class文件。

AppClassLoader:负责加载classPath下的类文件。

双亲委派模型

加载器首先并不会先自己加载,而是向上委托,实际是向上查找缓存,是否加载了该类,有则返回,没有则继续向上查找。委派到顶层之后,缓存中没有,则到加载路径中查找,有则加载返回,没有则向下查找。

 

posted @ 2022-05-26 15:35  jason饼干大怪兽  阅读(27)  评论(0)    收藏  举报