java
文章平均质量分 76
m0_47914176
这个作者很懒,什么都没留下…
展开
-
java - 注解解析与自定义
一.Annotation注解的基本结构就是一个@加字符,可以放在需要修饰的类、方法、变量和参数等元素前面。Annotation并不直接影响代码的语义,但是他可以被看做是程序的工具或者类库。它会反过来对正在运行的程序语义有所影响。Annotation可以从源文件、class文件或者在运行时通过反射机制多种方式被读取。Java中有五个元注解 (即作用在其它注解的标准注解):@Retention、@Documented、@Target、@Inherited、@Repeatable。 ...原创 2022-04-01 16:55:18 · 399 阅读 · 0 评论 -
Jvm - 的几种常量池
一.Class 文件常量池1.class 文件中存在常量池,其在编译阶段就已经确定了。2.用javap -v 命令查看编译后的文件:javap -v ClassConstantPool.class3.class文件常量池主要存放两大常量:字面量和符号引用1.查看class字节码的具体方法先创建一个这样的类public class ClassConstantPool {private int value = 1;public String s = "abc";p...原创 2022-03-28 12:04:14 · 319 阅读 · 0 评论 -
Jvm - 详解四 垃圾回收算法
一.判断对象是否存活在堆里面存放着几乎所有的对象实例,垃圾回收器在对堆进行回收前,要做的事情就是确定这些对象中哪些还 是“存活”着,哪些已经“死去”(死去代表着不可能再被任何途径使用得对象了)1.引用计数算法在对象中添加一个引用计数器,每当有一个地方引用它,计数器就加1,当引用失效时,计数器减1。Python在用,但主流虚拟机没有使用,因为存在对象相互引用的情况,这个时候需要引入额外的机制来处理,这样做影响效率。2.可达性分析来判定对象是否存活的。这个算法的基本思路就...原创 2022-03-24 15:44:39 · 230 阅读 · 0 评论 -
jvm - 详解三 内存溢出
一.栈溢出1.参数:-Xss1m, 具体默认值需要查看官网: https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html#BABHDABI2.HotSpot版本中栈的大小是固定的,是不支持拓展的。 java.lang.StackOverflowError3.一般的方法调用是很难出现的,如果出现了可能会是无限递归。/** * 栈溢出 -Xss1m */public class StackOverFlow ..原创 2022-03-24 11:58:28 · 2652 阅读 · 0 评论 -
Jvm - 详解二 从底层了解运行时数据区
一.运行测试代码1.复制运行代码让我们先贴一段代码,通过这段代码我们可以观察在运行时数据区的具体情况。/** * @author ningchuanqi * 从底层深入理解运行时数据区 * -Xms30m -Xmx30m -XX:+UseConcMarkSweepGC -XX:-UseCompressedOops * -Xss1m */public class JVMObject { public final static String MAN_TYPE = "...原创 2022-03-23 18:27:30 · 534 阅读 · 0 评论 -
Jvm - 详解一 运行时数据区
一.为什么说Java是一门跨平台语言Java内置JVM (java虚拟机),而JVM也是一个软件,不同的平台有不同的版本。我们编写的Java源码,编译后会生成一种 .class 文件,称为字节码文件。Java虚拟机就是负责将字节码文件翻译成特定平台下的机器码然后运行。也就是说,只要在不同平台上安装对应的JVM,就可以运行字节码文件,运行我们编写的Java程序。二.java程序从编译到执行的过程先看一幅图从图中可以看出,我们编写的Java文件,经由javac编译器,...原创 2022-03-17 17:00:29 · 1318 阅读 · 0 评论