当前位置: 首页>编程语言>正文

java 元空间多大合适 jvm元空间默认大小

jvm内存结构

1.8之后

元空间是metaspace,在jdk1.8的时候,jvm移除了永久代的概念,元空间也是对java虚拟机的方法区的一种实现。元空间与永久代最大的区别在于,元空间不在虚拟机中,使用本地内存。通过配置如下参数可以更改元空间的大小。

-XX:MetaspaceSize:初始空间的大小。达到该值就会触发垃圾收集进行类型卸载,同时GC会对该值进行调整:如果释放了大量的空间,就适当降低该值;如果释放了很少的空间,那么在不超过MaxMetaspaceSize时,适当提高该值。

-XX:MaxMetaspaceSize,最大空间,默认是没有限制的。

永久代的回收会随着full gc进行移动,消耗性能。每种类型的垃圾回收都需要特殊处理元数据。将元数据剥离出来,简化了垃圾收集,提高了效率。

java 元空间多大合适 jvm元空间默认大小,java 元空间多大合适 jvm元空间默认大小_加锁,第1张

1.8之前

永久代

永久代是hotspot虚拟机,也就是我们使用的java虚拟机的特有的概念,他不属于堆内存,是方法区的一种实现,各大厂商对方法区有各自的实现。永久代存放jvm运行时,需要的类,包含java库的类和方法,在触发full gc的情况下,永久代也会被进行垃圾回收。永久代的内存溢出也就是 pergen space。

java 元空间多大合适 jvm元空间默认大小,java 元空间多大合适 jvm元空间默认大小_java_02,第2张

super调用方法

super调用方法不是用super对象来调用方法而是用当前对象调用super的方法

public class Test11 extends A11 {

    public void test() {
        super.fun();
    }

    public static void main(String[] args) {
        Test11 test11 = new Test11();
        test11.test();

    }
}
class A11{
    public A11() {
        System.out.println(this);
    }

    public void fun() {
        System.out.println(this);
    }
}

java 元空间多大合适 jvm元空间默认大小,java 元空间多大合适 jvm元空间默认大小_加锁_03,第3张

java 元空间多大合适 jvm元空间默认大小,java 元空间多大合适 jvm元空间默认大小_jvm_04,第4张

1、String str1 = “hello” 在常量池中

2、new String(“llo”) 是运行时在堆空间创建的,“he”+new String(“llo”)是在堆中

java 元空间多大合适 jvm元空间默认大小,java 元空间多大合适 jvm元空间默认大小_java 元空间多大合适_05,第5张

hashCode方法本质就是一个哈希函数,这是Object类的作者说明的。Object类的作者在注释的最后一段的括号中写道:将对象的地址值映射为integer类型的哈希值。但hashCode()并不完全可靠的,有时候不同的对象他们生成的hashcode也会一样,因此hashCode()只能说是大部分时候可靠。

因此我们也需要重写equals()方法,但因为重写的equals()比较全面比较复杂,会造成程序效率低下,而利用hashCode()进行对比,则只要生成一个hash值进行比较就可以了,效率很高。因此,正常的操作流程是先用hashCode()去对比两个对象,如果hashCode()不一样,则表示这两个对象肯定不相等,直接返回false,如果hashCode()相同,再对比他们的equals()。综上所述:

equals()相等的两个对象hashCode()一定相等。

hashCode()相等的两个对象equal()不一定相等。

java 元空间多大合适 jvm元空间默认大小,java 元空间多大合适 jvm元空间默认大小_面试_06,第6张

两者返回的都是字符串类型

只有在char变成int的时候才会变为对应的assic码

java 元空间多大合适 jvm元空间默认大小,java 元空间多大合适 jvm元空间默认大小_java 元空间多大合适_07,第7张

java 元空间多大合适 jvm元空间默认大小,java 元空间多大合适 jvm元空间默认大小_jvm_08,第8张

A,只对写操作加锁,不对读操作加锁,会造成读到脏数据

B,CopyOnWrite的核心思想是利用高并发往往是读多写少的特性,对读操作不加锁,对写操作,先复制一份新的集合,在新的集合上面修改,然后将新集合赋值给旧的引用。这里读写平均,不适用

C,分段加锁,只在影响读写的地方加锁,锁可以用读写锁,可以提高效率

java 元空间多大合适 jvm元空间默认大小,java 元空间多大合适 jvm元空间默认大小_加锁_09,第9张

抛InterruptedException的代表方法有:

java.lang.Object 类的 wait 方法

java.lang.Thread 类的 sleep 方法

java.lang.Thread 类的 join 方法

CyclicBarrier是一个屏障类,它的await方法可以简单的理解为:等待多个线程同时到达之后才能继续进行,在此之前它就是这些线程的屏障,线程不能继续进行,而对于失败的同步尝试,CyclicBarrier 使用了一种要么全部要么全不 (all-or-none) 的破坏模式:如果因为中断、失败或者超时等原因,导致线程过早地离开了屏障点,那么在该屏障点等待的其他所有线程也将通过 BrokenBarrierException(如果它们几乎同时被中断,则用 interruptedException)以反常的方式离开

java 元空间多大合适 jvm元空间默认大小,java 元空间多大合适 jvm元空间默认大小_加锁_10,第10张

逻辑左移时,最高位丢失,最低位补0;

逻辑右移时,最高位补0,最低位丢失;

算术左移时,依次左移一位,尾部补0,最高的符号位保持不变。

算术右移时,依次右移一位,尾部丢失,符号位右移后,原位置上复制一个符号位;

循环左移时,将最高位重新放置最低位

循环右移时,将最低位重新放置最高位

例如:

1010100010101

逻辑左移一位结果为 0101000101010

逻辑右移一位结果为 0101010001010

算术左移一位结果为 1101000101010

算术右移一位结果为 1101010001010

循环左移一位结果为 0101000101011

循环右移一位结果为 1101010001010

java 元空间多大合适 jvm元空间默认大小,java 元空间多大合适 jvm元空间默认大小_面试_11,第11张

A,Thread可以被继承,用于创建新的线程

B,Number类可以被继承,Integer,Float,Double等都继承自Number类

C,Double类的声明为

public final class Doubleextends Numberimplements Comparable

final生明的类不能被继承

D,Math类的声明为

public final class Mathextends Object

不能被继承

E,ClassLoader可以被继承,用户可以自定义类加载器


https://www.xamrdz.com/lan/5pu1920586.html

相关文章: