
Java基础
文章平均质量分 93
Java_Mike
Hello World
展开
-
深入了解JVM垃圾回收机制
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里 面的人却想出来。-《深入理解Java虚拟机:JVM高级特性与最佳实践(第三版)》要对Java程序进行性能调优,就不得不理解JVM内部的垃圾回收机制。JVM就像一位勤劳的环卫工人,帮我们清理Java程序运行过程中产生的各种垃圾。接下来就让我们深度剖析这位环卫工人清理垃圾的过程。从而能帮我减少无用垃圾的产生。本文只讨论JDK8下的堆内存空间垃圾回收。1、什么是JVM垃圾回收垃圾回收(Garbage Col.原创 2021-07-04 16:41:55 · 767 阅读 · 3 评论 -
java同步神器-Synchronized锁升级优化
前言相信大家对Synchronized这个关键字并不陌生,在解决多线程并发操作下数据安全问题时,都会想到这个关键字,用来对共享资源进行加锁。但在JDK1.6版本之前,Synchronized是一个重量级锁,阻塞或唤醒java线程需要操作系统切换CPU状态来完成,这种状态转换需要耗费处理器时间。如果同步代码块中的内容过于简单,状态转换消耗的时间有可能比执行用户代码的时间还要长。JDK1.6对Synchronized加锁进行了优化,引入了 “偏向锁” 和 “轻量级锁”。于是目前Synchronized加锁共原创 2021-06-20 14:54:27 · 418 阅读 · 0 评论 -
小白理解HashMap线程非安全
小白理解HashMap线程非安全JDK1.7线程非安全JDK1.8线程非安全总结面试官总是喜欢问我这个小白HashMap为什么线程非安全,经过几次打击的的我下定决心要理解HahsMap线程非安全的原因。经过多方面的了解,我了解到HashMap线程非安全在不同JDK有不同的体现:JDK1.7:多个线程进行扩容时会出现链表死循环,数据丢失问题JDK1.8:数据被覆盖下面结合源码详细了解其中的奥秘JDK1.7线程非安全jdk7中线程非安全主要是因为在扩容函数 HashMap#transfer()原创 2021-06-12 17:00:15 · 306 阅读 · 2 评论 -
java中Scanner类nextInt之后用nextLine无法读取输入
本文转自http://blog.csdn.net/wjy1090233191/article/details/42080029本人也是刚开始学习java语言,在学习的过程中,老师让我们做一个模拟学生学籍管理系统的小程序。因为刚开始,做的是比较简单的,用switch语句做界面,然后配合Scanner 接收输入的数字进行跳转,完成各类操作。因为跳转时输入的是数字,而跳转后的操作要输转载 2017-02-26 16:14:22 · 782 阅读 · 0 评论 -
cmd命令行能运行java,不能运行javac
这是因为安装java jdk时将jdk与jre安装在同一个文件夹了,应该将他们安装在不同的文件夹里。解决方法:卸载已安装好的jdk,重新安装时将jdk与jre安装在不同的文件夹里原创 2016-09-08 20:09:07 · 3824 阅读 · 0 评论 -
使用命令行编译和运行java程序
前言现在很多IDE都可以自动编译和运行java程序了,但是我觉得还是有必要学会用命令行编译和运行java程序,这样就能更好理解java程序运行的机制。为了不依赖IDE,我用记事本作为编辑器。1.安装JDK安装过程我就不仔细讲了,网上很多教程。安装好后在命令行中输入javac / java运行测试jdk是否安装成功(javac和java都要测试一遍,因为有时候java可以,jav原创 2017-08-25 16:33:33 · 3701 阅读 · 0 评论