Java日记
a327369238
这个作者很懒,什么都没留下…
展开
-
Java线程池执行流程及坑
咳咳,详见:https://www.cnblogs.com/trust-freedom/p/6681948.html#label_3_2网上有很多讲的很详细得了,上面的文章,博主已经讲得非常详细了(但要注意上述文章是jdk1.7,1.8的大同小异),我这边总结下主要流程(忽略中途线程池关闭等异常情况)以及标注下一些重点或者可能忽略的点1.运行初,新任务(runnable)过来,判断当前活跃线程数量(注1)是否小于核心线程数,小于,直接新建线程运行之2.若大于核心线程数,直接加入队列;若当前活跃线程=0原创 2021-08-25 19:28:04 · 271 阅读 · 0 评论 -
Java父子类同名变量
嗯,继承的一个小知识点,前段时间线上碰到的一个问题,不说废话,直接上一个demo看下吧class Parent{ public int value = 5; public int getValue(){ return value; }}class Child extends Parent{ public int value = 10; ...原创 2020-04-09 19:46:29 · 986 阅读 · 0 评论 -
Java双亲委派
1.Java加载器组织结构简单说明每一个类加载器都有一个父加载器,这种父加载器不是通过继承来实现,即: (类的加载可参见:Java类的加载)Class MyClassLoader extends ClassLoader{}//这种只是声明定义自己的加载器,而不是ClassLoader是其父加载器,事实上ClassLoader是抽象类它事实上是通过组合关系来实现的://ClassLoader源码:原创 2017-06-14 20:42:01 · 1390 阅读 · 0 评论 -
(1) JVM
JVM,Java Virtual Machine,Java虚拟机,是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象的硬件,如处理器、堆栈、寄存器、还有相应的指令系统(对于类Java程序JVM就是一台计算机)。JVM的存在使得Java语言得以实现跨平台,因为Java程序只要面对JVM即可,而JVM则负责面对不同OS,用户只要安装JRE(后面会讲到)即可在不同OS上运行原创 2016-07-29 19:23:32 · 529 阅读 · 0 评论 -
(4) Java GC概述
GC,垃圾回收,JVM启动的时候除了启动进程-主线程,还有就是GC守护线程(一个JVM实例一个进程一个GC线程),它负责特定时间对JVM内存区中的堆(包括方法区(非堆))的对象进行回收释放,是JVM对Java内存对象的一套管理机制,Java程序员不需要关心内存的分配以及回收的问题,这一切都由JVM来管理,而内存的回收则是由GC来完成。在说明GC原理之前,先要知道,Java的GC什么时候原创 2016-08-04 16:18:09 · 1884 阅读 · 0 评论 -
(5) Java GC算法及种类
GC算法主要有以下三种方法(都是以GC Roots可达性为依据,引用计数算法实现简单,但由于存在循环引用问题,故已不采用,详见:Java GC(概述))(1).复制收集算法针对Young区,依次扫描这个区的所有可达对象(如何确定可达对象,请参考前一节),扫描只扫描GC维护的一张对象关系有向图(以下称为可达对象链),只要在这个图上的,就将这个对象复制到另一个区域(实现这种算法需要堆内原创 2016-08-05 21:04:36 · 6791 阅读 · 0 评论 -
(3) Java内存结构
Java的运行时数据区,也就是Java的内存结构(Java Structure),但注意区分Java的内存模型(Java Memory Model,JMM),JMM现在我还没仔细去研究过,有兴趣的同学可以自行百度查看下,如果以后有时间,我也会研究,然后记下自己的理解。Java的内存结构,可以分为以下几个部分:堆、栈、非堆以及其他。堆:存放Java对象,所有的对象(包括数原创 2016-08-02 15:49:37 · 4208 阅读 · 2 评论 -
(2) Java类的加载
本文主要说明的是JVM类的加载详细过程,类的初始化顺序原创 2016-07-29 21:16:54 · 1403 阅读 · 0 评论