Java基础
文章平均质量分 87
HardCorePlayer
共勉
展开
-
深入理解Java虚拟机笔记(2)-------对象创建、内存布局、访问定位
对象的创建:JVM在创建对象时会先检查这个对象的类是否已经被加载、解析、初始化过,如果没有则会进行类的加载,通过类加载检查后正式进行对象创建。进行对象内存分配将分配到的内存空间初始化为零值(对象头除外)设置对象头信息,如这个对象是哪个类的实例、如何才能找到类的元数据信息、对象的哈希码(实际上对象的哈希码会延后到真正调用Object::hashCode()方法时才计算)、对象的GC分代年龄等信息。这些信息存放在对象的对象头(Object Header)之中。根据虚拟机当前运行状态的不同,如是否启用偏向原创 2020-07-18 09:26:42 · 92 阅读 · 0 评论 -
深入理解Java虚拟机笔记(1)-------JVM内存模型
运行时数据区程序计数器:如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是本地(Native)方法,这个计数器值则应为空(Undefined)。此内存区域是唯一一个在《Java虚拟机规范》中没有规定任何OutOfMemoryError情况的区域。...原创 2020-07-15 22:09:18 · 99 阅读 · 0 评论 -
关于初始化指定大小的ArrayList,调用set方法报错下标越界java.lang.IndexOutOfBoundsException:
结论:初始定义的只是ArrayList的容量,而ArrayList的set方法中判断的是实际元素的个数,所以会报错过程:当我们定义一个初始化大小的ArrayList,直接调用set方法会报下标越界异常这是用暴力解法做一道算法题时写的代码 public static List<Integer> countSmaller(int[] nums){ int len = nums.length; List<Integer> counts = .原创 2020-07-11 21:45:42 · 2271 阅读 · 0 评论 -
Java多线程(1)-------线程的状态和生命周期
线程的状态和生命周期 一个线程的完整生命周期 ⑴.新建(创建) 当一个Thread类或者它的子类被声明并创建的时候,一个新的线程对象就产生了,此时该线程就处在新建状态。现在这个线程已经被分配了内存空间以及其他所需要的资源。 ⑵.等待&运行 线程在新建状态时就已经准备好运行了,只要它获得CPU资源(JVM将CPU使用权切换给该线程),该线程就脱离主线程开始自己的生命周期。 由于线程新建之后只是拥有内存资源,JVM并没有管理这个线...原创 2020-06-09 23:51:10 · 104 阅读 · 0 评论 -
Java多线程⑶-------线程池
为什么要用线程池一般来说,使用Thread手动创建线程有以下几个缺点。1.性能问题:每次一个请求进来都开启一个新线程,方法执行结束再销毁线程,势必要造成线程新建和销毁的资源开销。线程的存在也会占据内存空间,在线程过多的情况下线程间的切换会导致性能大打折扣,甚至过多的线程还会导致OOM问题。2.缺乏一个统一的管理容器。比如控制最大并发数,定时,线程间的分组隔离等。所以为了解决上述问题我们常常使用线程池来管理线程。JDK提供了5种默认线程池。但是内部实现都离不开ThreadPoolExecutor。.原创 2020-06-13 23:50:02 · 123 阅读 · 0 评论 -
Java多线程⑵-------线程的创建
线程的创建一般有4种形式,即:1.继承Thread类并重写run()方法2.实现Runnable接口并重写run()方法3.实现Callable接口并重写call()方法4.通过线程池创建本文主要回顾前三种创建方法,线程池的使用会单写一篇1.继承Thread类首先我们定义一个继承了Thread类的MyThreadclass MyThread extends Thread { private int value = 5; @Override public void原创 2020-06-12 01:35:56 · 122 阅读 · 0 评论 -
Java反射机制
Java的反射机制可以在程序运行的过程中获取对象的属性和方法先重温一下Class的概念我们都知道创建类的时候回用到class关键字,但是class也是属于类的一种对象(java.lang.Class)。一般我们可以通过3种方法获取到Class对象1.对象名.getClass() 如 test.getClass()2.Class.forName("包名.类名") 如 Class.forName("com.zh.Test")3.类名.class 如 Test.class在拿到了Class对象之.原创 2020-06-11 15:03:19 · 120 阅读 · 0 评论