随笔- 1046
文章- 115
评论- 19
阅读-
36万
随笔分类 - java
Java Happens-Before原则
摘要:Java Happens-Before原则 Happens-Before原则核心就是表达**在一些条件下,前面的操作对于后面的操作是可见的。**它有六个条件,或者说是六条原则。 一、线程中的顺序性原则 这个最容易理解,这个原则是指在同一个线程中,按照程序的顺序,前面的操作Happens-Before
阅读全文
mapDB文档
摘要:mapDB文档 介绍 MapDB是一个开源的嵌入式Java数据引擎和集合框架。它提供了Maps,Sets,Lists,Queues,Bitmaps的范围查询、数据过期机制、数据压缩、堆外存储和流式操作。MapDB可能是一个最快的Java数据库,它能够和 java.util 集合相媲美。它同时也拥有一
阅读全文
JVM 异常处理原理
摘要:JVM 异常处理原理 异常相关概念 Java异常抛出类型有两种: 显式抛出:抛出异常的主体是应用程序,它指的是程序在代码中使用 throw 关键字进行异常抛出。 隐式抛出:抛出异常的主体是JVM,它指的是程序在执行过程出现无法执行的异常状态,由JVM自动抛出相关异常。比如数组越界。 捕获异常相关的三
阅读全文
JVM监控和诊断工具
摘要:JVM监控和诊断工具 jps 它将打印所有正在运行的Java进程的相关信息。 在默认情况下,jps的输出信息包括Java进程的进程ID以及主类名。我们还可以通过追加参数,来打印额外的信息。例如,-l将打印模块名以及包名;-v将打印传递给Java虚拟机的参数(如-XX:+UnlockExperimen
阅读全文
Java字节码含义
摘要:Java字节码 操作数栈 在解释执行过程中,每当为Java方法分配栈桢时,Java虚拟机往往需要开辟一块额外的空间作为操作数栈,来存放计算的操作数以及返回结果。具体来说,**JVM执行每一条指令之前,Java虚拟机要求该指令的操作数已被压入操作数栈中。在执行指令时,Java虚拟机会将该指令所需的操作
阅读全文
Java 桥接方法
摘要:Java 桥接方法 桥接方法概念 Java中的桥接方法(Bridge Method)是一种为了实现某些Java语言特性而由编译器自动生成的方法。可以通过使用Java反射中 Method 类的 isBridge() 方法来判断该方法是否是桥接方法。通过反射 Class.getMethod("") 取出
阅读全文
JVM方法调用原理
摘要:JVM方法调用原理 方法重载 方法重载在编译过程就已经能够确定,具体到每个方法调用,Java编译器会根据所传入参数的声明类型来选取重载方法。可以分为三个步骤: 在不考虑对基本类型自动装拆箱,以及可变长参数的情况下选取重载方法; 如果在第1个步骤中没有找到适配的方法,那么在允许自动装拆箱,但不允许可变
阅读全文
深入理解Java虚拟机——垃圾收集算法
摘要:深入理解Java虚拟机——垃圾收集算法 分代收集理论 当前商业虚拟机的垃圾收集器,大多数都遵循了“分代收集”(Generational Collection)的理论(分代收集理论也有其缺陷,最新出现(或在实验中)的几款垃圾收集器都展现出了 面向全区域收集设计的思想,或者可以支持全区域不分代的收集的工
阅读全文
深入理解Java虚拟机——Java对象是否存活
摘要:作者:@dwtfukgv
本文为作者原创,转载请注明出处:https://www.cnblogs.com/dwtfukgv/p/14769719.html888
阅读全文
深入理解Java虚拟机——Hotpot虚拟机对象
摘要:深入理解Java虚拟机——Hotpot虚拟机对象 Java对象的创建 当Java虚拟机遇到一条字节码new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。 在类加载检查通过后,
阅读全文
CodeCache 深入了解
摘要:问题描述 一个应用程序一直正常运行,突然某个时刻处理能力下降,但是从流量、jstack、gc上来看都是比较正常的。 会在JVM日志中出现以下日志: Java HotSpot(TM) 64-Bit Server VM warning: CodeCache is full. Compiler has b
阅读全文
理解Java虚拟机——Java内存模型管理
摘要:深入理解Java虚拟机——Java内存模型管理 运行时数据区域 程序计数器 程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础
阅读全文
Java 使用fastjson 将 json字符串写到文件中去
摘要:首先需要引入fastjson的依赖文件,以下是maven的依赖: <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.73</version> </dependency>
阅读全文
java 如何调用 linux or mac 命令行
摘要:有时候我们需要在运行Java程序时去调用一些shell脚本或者是python脚本,Java提供了一些方式,但是直接使用会存在一些问题,比如传多个参数,或者拿到返回值或者是错误信息等不方便,所以下面写了一个Java调用命令行的通用方法。 因为需要等待调用的脚本完成才能够返回,所以需要进行阻塞,并且为了
阅读全文
MacOS 编译 openjdk8 并导入 Clion 调试
摘要:环境准备 安装Xcode11.0,当然也可以是其他版本,尽量超过11.0可以在appstore下载,也可以开发者网址下载:https://developer.apple.com/download/more/ 安装xcode-select xcode-select install 安装mercuria
阅读全文
java 常用命令
摘要:javac javac可以将.java文件编译成.class文件 javac *.java # 编译当前目录下的所有java文件 javac -d classes *.java # 编译当前目录下的所有java文件,并将所有的class文件放到classes目录下 javac -d claaes $
阅读全文