Java成神之路--基础篇
文章平均质量分 73
不怕晒的仙人掌
时光不匆匆
展开
-
1-1(JVM) JVM内存结构---堆、栈、方法区、直接内存
一、定义 1、堆:FIFO队列优先,先进先出。jvm只有一个堆区被所有线程所共享!堆存放在二级缓存中,调用对象的速度相对慢一些,生命周期由虚拟机的垃圾回收机制定。2、栈:FILO先进后出,暂存数据的地方。每个线程都包含一个栈区!栈存放在一级缓存中,存取速度较快,“栈是限定仅在表头进行插入和删除操作的线性表”。3、方法区:用来存放方法和static变量。二、存储的数据类型1、堆用来存储new出来的对...转载 2018-05-15 21:19:31 · 232 阅读 · 0 评论 -
3-2 阅读源代码-Integer
转载自http://www.hollischuang.com/archives/1058Integer 类在对象中包装了一个基本类型 int 的值。Integer 类型的对象包含一个 int 类型的字段。此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法。类定义public final class Integer...转载 2018-05-15 22:57:35 · 164 阅读 · 0 评论 -
3-1 阅读源代码--String
String、Integer、Long、Enum、BigDecimal、ThreadLocal、ClassLoader & URLClassLoader、ArrayList & LinkedList、 HashMap & LinkedHashMap & TreeMap & CouncurrentHashMap、HashSet & LinkedHash...转载 2018-05-15 22:54:12 · 203 阅读 · 0 评论 -
2-1 编译与反编译----javac 、javap 、jad 、CRF
转自:http://java.tedu.cn/ask/203119.htmlJava代码的编译与反编译一、什么是编译 1、利用编译程序从源语言编写的源程序产生目标程序的过程。 2、用编译程序产生目标程序的动作。 编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。 编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分...转载 2018-05-15 22:46:50 · 1485 阅读 · 0 评论 -
1-7 虚拟机性能监控与故障处理工具---jps, jstack, jmap、jstat, jconsole, jinfo, jhat, javap, btrace、TProfiler
转:https://blog.csdn.net/wsyw126/article/details/62422005概述给一个系统定位问题的时候,知识、经验是关键基础,数据是依据。工具是运用知识处理数据的手段。这里说的数据包括:运行日志、异常堆栈、GC日志、线程快照文件(threaddump/javacore文件)、堆转储快照(heapdump/hprof文件)等。## JDK的命令行工具 JDK的...转载 2018-05-15 22:42:18 · 536 阅读 · 0 评论 -
1-6 (JVM)类加载机制---classLoader、类加载过程、双亲委派(破坏双亲委派)、模块化(jboss modules、osgi、jigsaw)
转:http://www.importnew.com/25295.html如下图所示,JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化,下面我们就分别来看一下这五个过程。加载加载是类加载过程中的一个阶段,这个阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的入口。注意这里不一定非得要从一个Class文件获取,这里既可以从ZIP包中读取(比...转载 2018-05-15 22:40:08 · 1195 阅读 · 0 评论 -
1-5 (JVM)Java对象模型---oop-klass模型、对象头
相关文章 Java虚拟机系列前言在前一篇文章中我们学习了Java虚拟机的结构原理与运行时数据区域,那么我们大概知道了Java虚拟机的内存的概况,那么内存中的数据是如何创建和访问的呢?这篇文章会给你答案。1.对象的创建对象的创建通常是通过new一个对象而已,当虚拟机接收到一个new指令时,它会做如下的操作。 (1)判断对象对应的类是否加载、链接、初始化 虚拟机接收到一条new指令时,首先会去检查这个...转载 2018-05-15 22:33:11 · 1555 阅读 · 0 评论 -
1-4 (JVM)JVM参数及性能调优
一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过-XX:PermSize -XX:MaxPermSize 等参数调整其大小。 年轻代(New):年轻代用来存...转载 2018-05-15 22:24:53 · 615 阅读 · 0 评论 -
1-3 (JVM)垃圾回收---内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定
复习GC(垃圾收集),请时刻牢记下面几个问题: 1. 哪些内存需要回收?(java堆和方法区,那么为什么是这2个区域?分配和回收都是动态的。) 2. 什么时候回收? 3. 如何回收? 垃圾收集器与内存分配策略1 概述2 对象已死吗 2.1 引用计数算法 2.2 可达性算法 2.3 再谈引用 2.4 生存or死亡 2.5 回收方法区3 垃圾收集算法 3.1 标记-...转载 2018-05-15 22:08:00 · 550 阅读 · 1 评论 -
1-2 (JVM)Java内存模型---内存可见性、重排序、顺序一致性、volatile、锁、final
一、原子性原子性操作指相应的操作是单一不可分割的操作。例如,对int变量count执行count++d操作就不是原子性操作。因为count++实际上可以分解为3个操作:(1)读取变量count的当前值;(2)拿count的当前值和1做加法运算;(3)将加完后的值赋给count变量。在多线程环境中,非原子操作可能会受其他线程的干扰。比如,上述例子如果没有对相应的代码进行同步(Synchronizat...转载 2018-05-15 21:55:24 · 1030 阅读 · 0 评论 -
阅读源代码-Long
转自:https://blog.csdn.net/wangyangzhizhou/article/details/78026810概况Java的Long类主要的作用就是对基本类型long进行封装,提供了一些处理long类型的方法,比如long到String类型的转换方法或String类型到long类型的转换方法,当然也包含与其他类型之间的转换方法。除此之外还有一些位相关的操作。继承结构...转载 2018-08-21 17:11:09 · 248 阅读 · 0 评论