java stackoverflow,推荐8个堪称神器的Java学习网站
java stackoverflow,推荐8个堪称神器的Java学习网站详细介绍
本文目录一览: Java-java产生StackOverflowError的原因是什么
死循环等造成内存溢出
栈溢出。Java里面每个线程都有独立的、固定大小的栈空间, Java在解释执行的时候采用的是栈式的架构。 方法调用、方法内的局部变量都是在栈空间申请的。 空间的大小依赖于JDK版本,JDK1.6应该是512K,超过了这个空间就会产生StackOverFlow。
死循环本身是不会StackOverflow的,只有无限递归的时候会出现。原则上循环嵌套次数本身是没有限制的,限制的是占用的栈空间,如果你的方法里定义了很多很多变量,栈空间就会用完得比较快。如果你的软件不是很庞大,那么你的程序中出现了无限的递归的情况可能产生这个错误。
java.lang.StackOverFlowError 怎么解决 具体点
StackOverflow 这个问题一般是你的程序里头可能是有死循环或递归调用所产生的;可以查看一下你的程序,也可以增大你JVM的内存~~~
在Eclipse中JDK的配置中加上 -XX:MaxDirectMemorySize=128 这代码,就行了,默认是64M,增大一倍,我估计行了,还不行的话,就用256吧,还不行的话,估计就是你程序里头有死循环,或递归调用没写好了。。。
如果是直接发布在tomcat里的修改tomcat的配置文件
Java常见的几种内存溢出及解决方法【情况一】:
java.lang.OutOfMemoryError:Javaheapspace:这种是java堆内存不够,一个原因是真不够(如递归的层数太多等),另一个原因是程序中有死循环;
如果是java堆内存不够的话,可以通过调整JVM下面的配置来解决:
-Xms3062m
-Xmx3062m
【情况二】
java.lang.OutOfMemoryError:GCoverheadlimitexceeded
【解释】:JDK6新增错误类型,当GC为释放很小空间占用大量时间时抛出;一般是因为堆太小,导致异常的原因,没有足够的内存。
【解决方案】:
1、查看系统是否有使用大内存的代码或死循环;
2、通过添加JVM配置,来限制使用内存:
-XX:-UseGCOverheadLimit
【情况三】:
java.lang.OutOfMemoryError:PermGenspace:这种是P区内存不够,可通过调整JVM的配置:
-XX:MaxPermSize=128m
-XXermSize=128m
【注】:
JVM的Perm区主要用于存放Class和Meta信息的,Class在被Loader时就会被放到PermGenspace,这个区域成为年老代,GC在主程序运行期间不会对年老区进行清理,默认是64M大小,当程序需要加载的对象比较多时,超过64M就会报这部分内存溢出了,需要加大内存分配,一般128m足够。
【情况四】:
java.lang.OutOfMemoryError:Directbuffermemory
调整-XX:MaxDirectMemorySize=参数,如添加JVM配置:
-XX:MaxDirectMemorySize=128m
【情况五】:
java.lang.OutOfMemoryError:unabletocreatenewnativethread
【原因】:Stack空间不足以创建额外的线程,要么是创建的线程过多,要么是Stack空间确实小了。
【解决】:由于JVM没有提供参数设置总的stack空间大小,但可以设置单个线程栈的大小;而系统的用户空间一共是3G,除了Text/Data/BSS/MemoryMapping几个段之外,Heap和Stack空间的总量有限,是此消彼长的。因此遇到这个错误,可以通过两个途径解决:1.通过-Xss启动参数减少单个线程栈大小,这样便能开更多线程(当然不能太小,太小会出现StackOverflowError);2.通过-Xms-Xmx两参数减少Heap大小,将内存让给Stack(前提是保证Heap空间够用)。
【情况六】:
java.lang.StackOverflowError
【原因】:这也内存溢出错误的一种,即线程栈的溢出,要么是方法调用层次过多(比如存在无限递归调用),要么是线程栈太小。
【解决】:优化程序设计,减少方法调用层次;调整-Xss参数增加线程栈大小。
这几个Java网站,有点刺激
这几个java网站,有点刺激一、LearnJava在线
这是一个非常不错的学习Java的在线网站,纯免费。这是一个个人项目,旨在通过简单有效的在浏览器中进行练习让你快速掌握Java编程语言。通过直接从网络浏览器运行实际代码,你无需在本地安装和执行代码就可以尝试编码,这无疑提高了编程效率和上手效率。
你可以根据目录进行练习,有基础部分和高级部分,首先有例子代码,告诉你需要注意的事项以及详细的讲解,旨在把你教会后再让你进行练习。
二、StackOverflow
说到学习Java,怎么能不提StackOverflow呢?StackOverflow是一个与程序相关的T技术问答网站。用户可以在网站免费提交问题,浏览问题,索引相关内容,在创建主页的时候使用简单的HTML。在问题页面,不会弹出任何广告,销售信息,JavaScript窗口等。
干净清爽,基本上所有的问题你在StackOverflow都能找到答案,你可以提出公共问题,也可以提出私人问题,甚至可以在StackOverflow上找工作。
三、DZone
DZone上会有T前沿的新闻和文章,会有Al、大数据、云、数据库、DevOps、loT、Java还有开源项目关干Java新特性的介绍,新特性的使用都会在上面,是你掌握前沿动态不可或缺的网站。
四、LeetCode
LeetCode是一个很牛逼的刷题网站,它的重要性不用我多说7吧里面包括大量的算法题,这些算法题是大厂面试必出的题型,据说掌握了这些算法题后,你可以吊打中国任何一家大厂,是不是真的咱也不知道,毕竟咱们没做过几道题。
问题可以区分难易程度,有解决措施,接受度,困难程度等,还有大厂公司的面试题因为LeetCode太牛逼了,LeetCode推出7中文版,中文为力扣几平和英文版的一模一样,如果小伙伴英文不是很好可以看看中文版。
五、Java官方文档
学习Java,还有什么比官网更权威的呢?我之前一直不知道官网能做的这么干净,你来看一下包含各种内容,总榄,编程语言,工具,特性,JM等,只不过语言有一些生硬,需要强大的英文功底,不过现在有谷歌翻译后我觉得这些问题也都不是问题。
六、Coursera
Coursera是一个在线课程网站,是为大厂量身定做的,就和国内很多在线教育机构类似,不过真实性如何不能确保,毕竟身边没有小伙伴抱过课程。Coursera是大型公开在线课程项目,由美国斯坦福大学两名计算机科学教授创办。旨在同世界顶尖大学合作,在线提供网络公开课程,它与全世界最顶尖的大学和机构合作,提供任何人可学习的在线课程。
七、Java World
Java World是一个纯Java学习网站,它里面包括很多Java文章,它不同干DZone的领域那么多,Java World只专注干Java,哦对了,还有安卓,是你提高视野,学习Java新特性不可或缺的网站。
八、Java程序猿圈
Java World是一个纯Java学习网站,它里面包括很多Java文章,它不同干DZone的领域那么多,Java World只专注干Java,哦对了,还有安卓,是你提高视野,学习Java新特性不可或缺的网站。
Java堆栈溢出的机制与原理
Java堆栈溢出的出现 很让人痛苦的事情 很多时候都无法找到头绪 这里作者通过使用jrockit调用程序才最终发现了问题的所在 在很多情况下 Java堆栈溢出 很有可能是你的代码中用到数组 到你的索引超出范围了
java lang OutOfMemoryError: Java heap space
在Java程序运行中可能会报如上的错误 通常是在运行过程中内存占用了没有别释放造成的
以前可能没法跟踪可能是很痛苦的事情 现在好了 我们有一个调试软件可以用了 在生产环境下使用的jRockit软件进行调试 是Oracle公司出品的
前两天试用了一下真的很不错
前阵子有个程序跑 个礼拜左右就会出现Java堆栈溢出 始终找不到头绪 后来使用jrockit才找到问题的出处
jrockit是可以调试远程程序也可以调试本地程序的
具体调试步骤
(一)
如果是调试本地程序的话 启动jrockit 然后启动本地需要调试的程序 会在左侧工具栏 本地目录下创建一个连接为需要调试的程序 在上面点击右键 就会启动跟踪
如何跟踪呢 我的办法就是等 在跟踪开始后 进行截图 然后等程序运行一段时间后查找堆增长比较大的并且一直没有释放的变量
(二)
然后在上面点击右键 显示分配跟踪
(三)
然后找到对应的方法 然后就去找问题吧 看看是不是那个地方有内存一直没有释放啊
然后说点我自己的小经验 也许是不对的 但是我在我的应用里面确实是有效的
在经常需要调用的地方将变量设成全局的甚至是静态的 我的操作是设成全局的了 图省事呢 呵呵 因为我的变量时全局都要调用的而且是频繁调用的
用完的变量一定要记得让它等于null 否则执行gc()貌似是不给回收的
基本上jrockit跟踪是很强的 都能够找到你的问题所在 要仔细观察 改完程序后记得再重新跟踪下直到没有内存泄露为止
写完手工
lishixinzhi/Article/program/Java/hx/201311/26094
推荐8个堪称神器的Java学习网站
Java8个堪称神器学习网站
1、Google
啥都不说了,说多了都是泪,可气的是 Robin 李的搜索引擎实在是不争气。说句良心话,Google 的搜索结果比前者的质量高出一百(零一) 倍。 只要你想要学习,它会给你所有。
2、Stack Overflow
Stack Overflow 可以说是解决问题的杀手锏。如果英语能力不太好的话,可以借助一下 Chrome 浏览器的自动翻译功能。
3、GitHub
GitHub 是一个拥有数十亿行代码的网站,每天有数百万开发者聚集在一起,研究开源软件中存在的问题。对于普通的程序员来说,如果不想重复造轮子,就必须要站在巨人的肩膀上,那么巨人是谁呢? 就是 GitHub。那些牛逼的开源软件库,99% 的情况下会在 GitHub上找到它。
对于成功的程序员来说,如果想要被别人膜拜,最好能在 GitHub上贡献一个开源库,如果星标超过 1W,那可是相当的牛逼,在业界应该算是响当当的人物。
4、IBM Developer
IBM developerWorks 提供了中文版,里面的文章都属于非常高质量的。
5、Java SE 技术文档
即使是 Java 编程的大牛 ,也离不开这份文档。
6、Java World
这个网站包含了大量的 Java 教程 ,涉及各种各样的话题。其中很多文章都写的很好 ,并且有图片、插图进行说明。它可以被用来当作深度学习的教科书。英文能力有限的话,可以使用谷歌翻译。
7、Program Creek
Program Creek 在维护方面做的很好 ,文章读起来也比较有趣。在这里 ,你可以找到其他任何网站都不曾涉及到的话题 ,而且几平每篇文章都包含漂亮的插图或者示例代码。
8、JournalDev
想学系列文章,推荐 JournalDev,这个网站上所有的 Java 系列文章都堪称经典。有 Spring,有 Java设计模式,有 Java 核心,有 Java EE,有 Java 面试题,应有尽有。
小白求大神解决,java.lang.stackoverflowerror.null非常感谢!
stackoverflow一般都有内存有关系,应急时重启下机器估计就好了
toString循环调用而造成stackoverflow
遇到一个神坑 程序可以正常运行, 但是debug报如下错 Method threw 'java.lang.StackOverflowError' exception. Cannot evaluate bekyiu.parser.ast.Variable.toString()
定位到出错的类
debug模式下要显示信息, 就会调用该类的toString方法, 因为我的toString方法是lombok自动生成的, 所以会打印所有成员 故会调用当前节点的parent节点的toString方法, 而parent也是ASTNode类型, 所以会打印children中的每一个元素, 如此一来就造成了循环调用
解决方法: 重写toString 不打印parent或者children即可
JAVA 使用Arrays.Sort() 排序报错
堆栈溢出。
有时候玩递归的时候会出现!
看有没有死循环或无限递归的情况!
StackOverflow 这个问题一般是你的程序里头可能是有死循环或递归调用所产生的;可以查看一下你的程序,也可以增大你JVM的内存~~~
在Eclipse中JDK的配置中加上 -XX:MaxDirectMemorySize=128 这代码,就行了,默认是64M,增大一倍,我估计行了,还不行的话,就用256吧,还不行的话,估计就是你程序里头有死循环,或递归调用没写好了。。。
有哪些学习Java的网站?
1、Stack overflow
Stack overflow可能是编程界中非常流行的网站了 , 是一个与程序相关的 IT 技术问答网站,用户可以在网站免费提交问题,浏览问题,索引相关内容,在创建主页的时候使用简单的 HTML 。一部分的程序员学习 API 或者编程语言 , 通常依赖于代码示例 ,stackoverflow 就可以提供大量的代码片段。
2、CSDN
国内非常大的技术交流平台,很多大牛的博客都有一定的参考价值,可以在上面找一些自己需要的技术文档。
3、Github
你也许知道可以免费的将你的项目托管在哪 , 但你不一定知道它还是一个学习当今流行的 Java库和框架的优秀资源。比如 , 你想学 Spring MVC Framework, 你可以搜索并且找到一些开源的项目。遵循“照葫芦画瓢”的原则 , 你能够通过实例快速的学习框架 , 尤其是你已经具有使用类似框架的经验。
4、LeetCode
如果有 Java 方面的面试问题 , 例如“在 Java 中 , 内存中的数组是什么样的” , 你可以从很多 Java 教程中找到答案。这个网站还有一个好的地方就是 , 它可以通过大小不同的数据在线检查你的代码是否正确。很多人认为 , 面试成功的关键在于重复这三个重要步骤 : 编码 -> 阅读 -> 讨论。
5、简书
也是一个技术交流网站,很多人都会在上面发表自己的技术文章,还有一些书籍推荐等等,平时没事的时候,可以自己浏览一下。
6、Java SE 技术文档
这个网站包含了在使用 Java SE API 时会用到的所有文档 , 即使你是 Java 开发牛人 , 我敢肯定在这里你仍能发现一些有用的东西。比如 , 你可以阅读一些像“ Java 类的本质”、“部署”这样的教程。
1,B站:https://www.bilibili.com/
第一个网站肯定不必多说,就是我们经常逛的小破站,也就是所谓的b站,这个网站原本的定位是一个二次元动漫类的网站,可是走着走着越走越偏,b站自己也万万没想到自己会变成一个学习类的网站。对于我们程序员而言,这里有海量的编程类的学习资料,不管是什么类型的编程语言,编程技术,你几乎都可以在这里找到对应的视频教程。而且最重要的是视频播放的时候不会有任何烦人的广告,几乎不会受到任何的打扰。正因为如此,我现在也入驻了b站,成为了一名up主,在b站里面分享自己的一些开发经验和教训,希望能够给大家提供一些帮助。
2,CSDN:https://www.csdn.net/
CSDN是国内非常知名的技术交流社区,创建的时间也比较早,所以在国内也是非常的有影响力的。虽然说这个社区有一定的争议性,比如说盗版文章,盗版资料,但是CSDN还是有非常多优质的原创的文章和资料。对程序员来讲,经常来这里逛一逛也是会学到不少的知识的。
3,51自学网:https://www.51zxw.net/
现在教程类的网站也是非常多,比如说慕课网,腾讯课堂之类的。但为啥我偏偏推荐51自学网呢?简单来说我对他比较有感情。在2007年我刚上大学的时候,我就在51网上面去学一些乱七八糟的技术,当年很多我们专业课要用到软件还有相关的技术,我都是在里面学到的,所以我一直都对他比较有感情。而且这个网站还是有不少编程类的学习视频,基本上你想学的技术在这上面都能够找得到,他的视频大部分都是免费的,但也有一些需要付费的,但是价格往往不是很高,平均下来一个视频才几毛钱,我觉得还是非常的良心。
4,LeetCode:https://leetcode-cn.com/
现在很多公司,尤其是一线大厂面试的时候,必考的一个项目就是算法。谈到算法就肯定会谈到LeetCode,他是一个非常知名的刷算法的网站,里面有大量的算法题目,如果你能够把这些算法题都刷完,那么你的算法水平提升肯定不是一个档次,而且他每道题后面都会有相应的评论与题解,如果你不会做的话,在这里可以找到灵感。他的主站是美国版的,但也有中文版的,我比较推荐说中文版的,因为中文版会根据我们国内的情况增设一些知名企业的面试题,这对于我们面试的时候会非常有帮助。
5,GitHub:https://github.com/
作为一名程序员,如果你没有听说过GitHub,那你肯定不是一名合格的程序员,GitHub上面托管了大量的优秀项目,比如说Linux内核源码及Git本身的源码,都托管在这上面。在GitHub上面你可以通过主题,榜单等方式找到自己感兴趣的项目,通过多做一些项目,你就可以很快的提升自己的技术,从而进入到自己心仪的公司。
6,菜鸟教程:https://www.runoob.com/
菜鸟教程提供了编程的基础技术教程,介绍了Java,Python,Ruby,php,MySQL等各种编程远的基础知识。我们从他的主页面看过来,教程真的是非常的全面。同时这里面也提供了非常多的工具,甚至还提供了各种编程语言的在线工具,你甚至都不需要开启代码编写软件就可以直接运行代码,真的是非常的方便。
7,codecademy:https://www.codecademy.cn/
codecademy是一个免费的有趣的在线互动编程学习网站。目前提供了html,css,php,javascript,Ruby,jQuery,Python等课程。他像玩游戏一样让你一关一关从易到难来完成学习,你可以每天利用碎片时间从零基础入门到掌握一门编程语言,相比大多数传统的学习方法实在是好太多了。用户在学习的时候只需要在命令行中输入正确的代码提交保存,就可以一关一关的完成整个学习过程。而且由于是分段式的学习,用户可以很快地拿起学习然后放下,整个学习过程不会有太大的时间压力。
8,coursera:https://www.coursera.org/
coursera是由吴恩达教授所创办的在线教育网站,提供了大规模开方式线上课程,他们与190多所顶尖大学和公司合作,提供了超过2400门的优质课程,包括商务,计算机科学,数据科学,语言学习等多方面的讲座与视频。当然他们也提供一些付费的项目,但是价格还是比较公道的。除此之外,你只要完成课程并通过测试,你就能够拿到相应的证书,这些证书没啥用,但是是对你学习的一种肯定,大家有兴趣的话可以去学一学。
9,stack overflow:https://stackoverflow.com/
stack overflow是一个程序员问答平台,你有程序员相关的问题都可以在这里面搜索并得到比较专业的回答,这里比某度专业很多,毕竟某度是一个中和性的搜索引擎,大家在搜索的时候尽量用英文,你如果用中文搜索的话可能不对得到太多的结果,而且很多专业直击要点的回答往往都是用全英文来写的。所以大家一定要习惯用英文起获取自己想要的答案。
10大程序员必逛网站,良心推荐,建议收藏!
Java学完哪些内容能够出去找工作
javazip压缩包过大解压失败
当我尝试创建java.util.zip.ZipFile时,得到了java.util.zip.ZipException: error in opening zip file。 仅当我尝试打开较大的ZipFile(> 2GB)时,才会发生此异常。 有一个打开大zip文件的技巧吗?
稍后,我需要从该zip中提取单个文件,并且我怀疑ZipInputStream是否足够快地提取所需文件,因为我需要运行所有文件。
这是我的StackTrace:
1
2
3
4
5
Caused by: java.util.zip.ZipException: error in opening zip file
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.
(ZipFile.java:225)
at java.util.zip.ZipFile.
(ZipFile.java:148)
at java.util.zip.ZipFile.
(ZipFile.java:162)
更新:
我发现它可以在我的台式计算机上运行,并且如果我在Android Studio中将ZipFile作为JUnit-Test打开也可以运行(因为JUnit-Tests在本地台式计算机上运行,而不在android设备上运行)。 但是,我无法在Android设备上正常运行。 我想原因是android文件系统。
相关讨论
可能重复。 引用此:[stackoverflow.com/questions/325202/
要记住的关键点是,Java 6仅支持最大2GB的zip文件,尤其是在处理大型zip存档时。
Java 7支持zip64模式,可用于处理大于2GB的大型zip文件
对大文件也使用流是个好主意:
1
2
3
4
5
6
7
8
9
10
11
12
13
private static void readUsingZipInputStream() throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(FILE_NAME));
final ZipInputStream is = new ZipInputStream(bis);
try {
ZipEntry entry;
while ((entry = is.getNextEntry()) != null) {
System.out.printf("File: %s Size %d Modified on %TD %n", entry.getName(), entry.getSize(), new Date(entry.getTime()));
extractEntry(entry, is);
}
} finally {
is.close();
}
相
javazip压缩包过大解压失败的原因:网络传输不好导致文件下载损坏、网站提供的RAR压缩包最初被损坏、使用的下载工具不够完善。我们可以通过压缩软件里的“修复压缩文件”解决javazip压缩包过大解压失败的问题。