摘要:
针对本文,博主最近在写《成神之路系列文章》 ,分章分节介绍所有知识点。欢迎关注。 一、基础篇 JVM JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别 Java内存模型 内存可见性、重排序、顺序一致性、volatile、锁、final 垃圾回收 内存分配策略、垃圾收集器(G1)、GC算法、GC参 阅读全文
随笔分类 - Java
学了编译原理能否用 Java 写一个编译器或解释器?
2018-11-13 18:36 by GarfieldEr007, 1382 阅读, 收藏,
摘要:
16 个回答 默认排序 16 个回答 默认排序 默认排序 RednaxelaFX JavaScript、编译原理、编程 等 7 个话题的优秀回答者 282 人赞同了该回答 能。我一开始学编译原理的时候就是用Java写了好多小编译器和解释器。其实用什么语言来实现编译器并不是最重要的部分(虽然Ja 阅读全文
Javac编译原理
2018-11-13 18:34 by GarfieldEr007, 419 阅读, 收藏,
摘要:
java源代码(符合语言规范)-->javac-->.class(二进制文件)-->jvm-->机器语言(不同平台不同种类) 如何让java的语法规则适应java虚拟机的语法规则?这个任务由javac编译器来完成java语言规范转换成java虚拟机语言规范。 编译流程: 流程: 词法分析器:将源码转 阅读全文
Java编译原理
2018-11-13 18:33 by GarfieldEr007, 308 阅读, 收藏,
摘要:
1. 关于动态加载机制 学习Java比C++更容易理解OOP的思想,毕竟C++还混合了不少面向过程的成分。很多人都能背出来Java语言的特点,所谓的动态加载机制等等。当然概念往往是先记住而后消化的,可有多少人真正去体会过动态加载的机制,试图去寻找过其中的细节呢? 提供大家一个方法:在命令行窗口运行J 阅读全文
深入分析Java的编译原理
2018-11-13 18:33 by GarfieldEr007, 714 阅读, 收藏,
摘要:
在《Java代码的编译与反编译》中,有过关于Java语言的编译和反编译的介绍。我们可以通过javac命令将Java程序的源代码编译成Java字节码,即我们常说的class文件。这是我们通常意义上理解的编译。 但是,字节码并不是机器语言,要想让机器能够执行,还需要把字节码翻译成机器指令。这个过程是Ja 阅读全文
无IDE时编译和运行Java
2018-11-13 18:29 by GarfieldEr007, 426 阅读, 收藏,
摘要:
最近 Java subreddit 出现了一篇”在没有IDE的情况下编译Java包” 的帖子,这个帖子抛出了这么一个问题,“是否存在一个命令可以编译一组处于同一文件夹下独立包内的java文件的方法(这称之为bin),同时怎样运行新的类文件呢?” 它的提出者 kylolink解释说,“当我开始依赖Ec 阅读全文
Java 代码编译和执行的整个过程
2018-11-13 18:28 by GarfieldEr007, 230 阅读, 收藏,
摘要:
Java 字节码的执行是由 JVM 执行引擎来完成,流程图如下所示: Java 代码编译和执行的整个过程包含了以下三个重要的机制: Java 源码编译机制 类加载机制 类执行机制 Java 源码编译机制 Java 源码编译由以下三个过程组成: 分析和输入到符号表 注解处理 语义分析和生成 class 阅读全文
java常见反编译工具
2018-11-13 18:23 by GarfieldEr007, 2599 阅读, 收藏,
摘要:
1、Java反编译插件 —— Jadclipse JadClipse是Jad的Eclipse插件,是一款非常实用而且方便地Java反编译插件,我们只需将下载的插件包复制到eclipse的plugins目录下,然后修改window -> Preferences -> Java -> JadClipse 阅读全文
Java代码的编译与反编译那些事儿
2018-11-13 18:23 by GarfieldEr007, 505 阅读, 收藏,
摘要:
编程语言 在介绍编译和反编译之前,我们先来简单介绍下编程语言(Programming Language)。编程语言(Programming Language)分为低级语言(Low-level Language)和高级语言(High-level Language)。 机器语言(Machine Lang 阅读全文
java反编译工具
2018-11-13 18:00 by GarfieldEr007, 278 阅读, 收藏,
摘要:
介绍 Java 反编译工具有很多种,以下介绍其中一些工具 jad jad 是一款使用非常广泛地 Java 反编译工具,官网 http://www.varaneckas.com/jad 提供下载 批量反编译 .class 示例 jad.exe -r -ff -d src -s java classes 阅读全文
Btrace使用教程
2018-11-13 14:44 by GarfieldEr007, 290 阅读, 收藏,
摘要:
下载 安装及环境配置 BTrace简介及使用须知 使用方法 使用场景 实战DEMO 1.监控指定方法的耗时 2.监控指定函数中所有外部调用的耗时情况.PS:这里最好只监控一个函数 太多的话 性能没法看 3.按接口、父类监控方法的执行 4.正则表达式定位监控 5.监控代码是否到达了某类的某一行 6.打 阅读全文
我的Java学习推荐书目
2018-11-13 14:43 by GarfieldEr007, 204 阅读, 收藏,
摘要:
一、基础类1、《Thinking in java》,入门第一位是建立正确的概念。2、《Core Java》,我没系统读过,这本书更贴近实践,更多API的介绍,同样,更新也更频繁。 二、进阶类1、《Effective Java》,在熟悉语法、API之后,你需要知道最佳实践和陷阱,没有比这本更好的。2、 阅读全文
BTrace使用简介
2018-11-13 14:41 by GarfieldEr007, 133 阅读, 收藏,
摘要:
很多时候在online的应用出现问题时,很多时候我们需要知道更多的程序的运行细节,但又不可能在开发的时候就把程序中所有的运行细节都打印到日志上,通常这个时候能采取的就是修改代码,重新部署,然后再观察,但这种方法对于online应用来说不是很好,另外一方面如果碰到不好改的代码,例如引用的其他的外部的包 阅读全文
BTrace使用小结
2018-11-13 14:40 by GarfieldEr007, 408 阅读, 收藏,
摘要:
简介 BTrace是一个安全的JVM动态追踪工具,最初为原Sun公司Kenai项目下面的一个子项目。 典型的使用场景是,“我要查个问题,可那个方法没有打印入口参数和返回结果日志”,“我想看某个方法的执行耗时”,“我想查看某方法如System.GC()的调用栈”等等,这些都是BTrace可以小试牛刀的 阅读全文
如何在生产环境使用Btrace进行调试
2018-11-13 14:39 by GarfieldEr007, 300 阅读, 收藏,
摘要:
占小狼 转载请注明原创出处,谢谢! 背景 记得前几天有人问我:在生产环境中可能经常遇到各种问题,你们一般是如何进行调试的? 很惭愧,没有经验。因为平时碰不到生产环境的服务器,定位问题需要各种数据,所以大多数问题的解决方式都是在本地打断点进行调试,或者在测试环境利用输出日志进行调试,这种方式简单粗暴, 阅读全文
BTrace : Java 线上问题排查神器
2018-11-13 14:38 by GarfieldEr007, 168 阅读, 收藏,
摘要:
BTrace 是什么 BTrace 是检查和解决线上的问题的杀器,BTrace 可以通过编写脚本的方式,获取程序执行过程中的一切信息,并且,注意了,不用重启服务,是的,不用重启服务。写好脚本,直接用命令执行即可,不用动原程序的代码。 原理 总体来说,BTrace 是基于动态字节码修改技术(Hotsw 阅读全文
淘宝Tprofiler工具实现分析
2018-11-13 14:31 by GarfieldEr007, 382 阅读, 收藏,
摘要:
工具介绍TProfiler是一个可以在生产环境长期使用的性能分析工具.它同时支持剖析和采样两种方式,记录方法执行的时间和次数,生成方法热点 对象创建热点 线程状态分析等数据,为查找系统性能瓶颈提供数据支持.TProfiler在JVM启动时把时间采集程序注入到字节码中,整个过程无需修改应用源码.运行时 阅读全文
JVM 性能调优实战之:使用阿里开源工具 TProfiler 在海量业务代码中精确定位性能代码
2018-11-13 14:30 by GarfieldEr007, 294 阅读, 收藏,
摘要:
本文是《JVM 性能调优实战之:一次系统性能瓶颈的寻找过程》 的后续篇,该篇介绍了如何使用 JDK 自身提供的工具进行 JVM 调优将 TPS 由 2.5 提升到 20 (提升了 7 倍),并准确定位系统瓶颈:我们应用里静态对象不是太多、有大量的业务线程在频繁创建一些生命周期很长的临时对象,代码里有 阅读全文
性能工具TProfiler介绍文档
2018-11-13 14:28 by GarfieldEr007, 313 阅读, 收藏,
摘要:
工具介绍 TProfiler是一个可以在生产环境长期使用的性能分析工具.它同时支持剖析和采样两种方式,记录方法执行的时间和次数,生成方法热点 对象创建热点 线程状态分析等数据,为查找系统性能瓶颈提供数据支持. TProfiler在JVM启动时把时间采集程序注入到字节码中,整个过程无需修改应用源码.运 阅读全文
Jigsaw 项目:Java 模块系统新手引导
2018-11-10 21:39 by GarfieldEr007, 883 阅读, 收藏,
摘要:
前言 随着 2017 年 10 月 Java 9 的发布,Java 能够使用模块系统了,但是中文互联网上的资料太少,许多关于 Java 模块系统的文章都只是介绍了模块系统的好处,或者给了一些毫无组织的代码片段,新手在第一次使用模块系统时往往不知道如何下手。 好在 OpenJDK 官方文档给出了一个很 阅读全文
浙公网安备 33010602011771号