安装
- centOS下使用的nexus3,安装过程没啥可说的,主要是记一下遇到的问题。
vm配置
- 错误提示内容:
Error occurred during initialization of VM
Could not reserve enough space for objectheap
- 解决方法是改小vm需要的内存
- 在3里面配置vm的文件是
/usr/local/nexus/nexus-3.19.1-01/bin/nexus.vmoptions
,修改前三行内容为
1 | -Xms128m |
1 | public void foo(Object lock) { |
引用计数没啥可说的,就是对堆中的对象记录有多少对象来持有它。在我的理解中最多的应该还是变量来引用,还有如果是与native的代码交互,可能还有指针来持有。
可达性是用来解决互相引用问题的,这个算法的实质在于将一系列 GC Roots 作为初始的存活对象合集(live set),然后从该合集出发,探索所有能够被该集合引用到的对象,并将其加入到该集合中,这个过程我们也称之为标记(mark)。最终,未被探索到的对象便是死亡的,是可以回收的。
那么什么是 GC Roots 呢?我们可以暂时理解为由堆外指向堆内的引用,一般而言,GC Roots 包括(但不限于)如下几种:
重载的方法在编译阶段完成识别,调用是根据参数声明类型选择重载方法。选择分三个阶段:
如果 Java 编译器在同一个阶段中找到了多个适配的方法,那么它会在其中选择一个最为贴切的,而决定贴切程度的一个关键就是形式参数类型的继承关系。
下面代码中第一次调用会是函数2,因为null可以匹配object和string,但是因为string是Object的子类,所以编译器认为string合适。
Update your browser to view this website correctly. Update my browser now