java 文件保存在内存_如何掌握Java内存(并保存程序)

java 文件保存在内存

通过AppDynamics解决应用程序问题的速度提高了10倍–以最小的开销在代码级深度监视生产应用程序。 开始免费试用!

您花费了无数小时来解决Java应用程序中的错误并在需要的地方获得其性能。 在测试过程中,您注意到应用程序随着时间的推移逐渐变慢,完全崩溃或表现不佳。 您遍历代码,并确保您没有错过任何可能导致这些问题的内容。 最终,您承认自己正在处理内存泄漏。 Java的垃圾收集器会尽力帮助解决这些泄漏,但是当您遇到重大问题时,它只能做很多事情。 您需要一种方法来确定导致内存泄漏的原因,解决该问题的方法以及理解Java垃圾回收在整个应用程序性能中所扮演的角色。

Java内存泄漏的主要症状

您遇到几种症状,表明应用程序存在内存泄漏问题。 与突然失败相反,总体应用程序性能的缓慢下降强烈表明内存泄漏。 每次您运行该应用程序时,或者仅当您开始使用更多数据或开始扩展它时,才可能出现此问题。 由于内存泄漏耗尽了所有可用资源,您的应用程序可能会显示内存不足错误。 您可以重新启动该应用程序并希望获得最好的结果,但是在解决漏洞之前,您将遇到多次崩溃。 通常,当对象引用累积而不是释放时,您将处理内存泄漏。 它们占用了您的可用内存,使您的应用程序无法访问所需的资源。

看起来像内存泄漏的配置错误

在研究Java内存问题和分析之前,请确保您没有处理完全不同的问题。 一些内存不足错误是由各种原因引起的,例如配置错误。 您的应用程序可能缺少正确的堆大小或与系统上的其他应用程序冲突。 如果您开始解决内存不足的问题,但无法找出导致内存泄漏的原因,请重新看一下您的应用程序。 您可能会发现需要更改终结器线程或增加永久生成空间。

内存监视工具的好处

内存监视工具使您可以更好地了解Java应用程序如何使用可用资源。 您可以采取此步骤来缩小导致内存泄漏和其他性能问题的根本原因。 该软件分为几类,您可能需要使用多个应用程序来找出问题所在,是否要处理内存泄漏以及如何开始解决问题。

堆转储文件为您的Java内存分析提供了必要的输出。 您可能需要使用两种工具:一种用于生成转储文件,另一种用于有意义的分析。 该解决方案为您提供了有关应用程序运行情况的详细视图。 一旦工具突出显示了潜在的问题区域,就可以精确地缩小问题发生的位置。 现在,是时候进行冗长而令人沮丧的部分了:反复试验。 您的内存分析工具可能表明您的代码存在多个问题,但您不确定它们是否会导致性能影响。 如果您一次更改所有内容,那么您将无法确切知道应用程序会遇到什么问题。 更糟糕的是,您可能会引入全新的错误,并且必须重新开始该过程。

一次进行一次更改,然后尝试重复该错误。 您可能需要让应用程序运行一段时间才能复制原始错误条件。 如果您的内存泄漏在第一次测试中消失了,请不要忘记在负载下对其进行测试。 您的应用程序在处理少量数据时可能会正常工作,但在处理大型数据集时会遇到相同的问题。 如果仍然遇到相同的错误,请从头开始,并攻击另一个可能的原因。

在使应用程序完美运行之后,内存监视工具被证明很有用。 您可以远程监视JVM性能,并在遇到问题之前主动解决问题,收集历史性能数据以帮助您将来改善编程工作,并观察Java在重负载下的运行方式。 一些解决方案包括警报和其他警报,因此您可以在出现问题的瞬间就知道。 您不希望关键任务应用程序崩溃并由于停机而造成数万美元的损失,因此这些工具会增加响应时间。 您的内存监视软件还使您可以立即开始诊断过程,而不需要在没人告诉您确切的错误代码或办公室发生的问题时就去现场。

如果您经常遇到Java应用程序的内存和性能问题,请仔细检查测试过程。 确定过程中的任何薄弱环节并更改测试策略。 与其他Java程序员接触,并比较质量检查最佳做法。 有时,您可能会忽略代码的一小部分,并对整个应用程序产生长期影响。

垃圾回收在Java内存和内存泄漏中的作用

Java的垃圾回收在您的应用程序性能和内存使用中起着关键作用。 该程序搜索不再使用的对象并将其删除。 这些无效对象不再占用内存,因此您的应用程序继续拥有可用资源。 有时,您的应用程序没有给GC足够的时间或资源来清除死对象,这些死对象会堆积起来。 您还可能遇到这样的情况,即您对假定为无效的对象有有效的引用。 垃圾收集器对此无能为力,因为它的自动内存管理会跳过活动对象。 通常,GC会自动运行,但是您可能需要调整其行为以适应具有挑战性的内存问题。 但是,GC可能会独自导致性能问题。

GC世代

GC将对象分为不同的世代以优化收集。 年轻的一代代表着很快消失的物体。 GC通常在这一代上运行,因为它通常必须清理对象。 存活超过一定阈值的物体会逐渐进入老一代。 这些对象停留的时间更长,因此GC不会频繁运行。 但是,当GC确实在这些对象上运行时,您的应用程序将经历一项主要操作,其中收集器将查看您的活动对象以删除垃圾。 您的应用程序有最后一代:永久一代。 通常,这些对象包括必要的JVM元数据。 在这一代中,您不会产生很多垃圾,但是在程序不再需要类之后,您的应用程序可能需要GC删除它们。

GC与响应时间之间的联系

垃圾收集,无论是次要的还是主要的,都将停止应用程序线程,直到它们完成该过程。 这称为“停止世界”事件。 单个新一代GC不会显着影响性能,但是如果您的客户流失率很高,则会遇到问题。 您最终会遇到次要GC持续运行或您的旧一代以不可持续的速度增长的情况。 您需要平衡年轻一代GC的频率和性能,这可能需要增加年轻一代的规模。

老一代和永久一代的GC对您的应用程序性能和内存使用产生了重大影响。 这项主要的GC操作遍历整个堆,以取出死对象。 该过程比次要GC持续时间更长,因此对性能的影响持续时间更长。 当您的客户流失率较高且老一代人较多时,您的整个应用程序就会被Stop the World事件所困扰。

GC优化需要监视程序运行的频率,总体性能影响以及如何调整应用程序以减少此频率。 您可能需要确定同一对象被分配多次,远离应用程序不必要的分配,或者找到阻碍整个系统的阻塞点。 要获得正确的平衡,就必须密切注意从CPU负载到GC周期的各个方面,尤其是在年轻一代和老一代频率不平衡的情况下。

解决内存泄漏和优化垃圾回收可以帮助您提高Java应用程序的性能。 您需要处理许多活动部件,但是使用正确的故障排除方法和旨在提供强大可见性的分析工具,您可以深入解决问题,而不必再遇到频繁的性能问题。

适当的内存分配和监视在Java应用程序中起着至关重要的作用。 您需要完全掌握GC,对象删除,内存泄漏和性能之间的相互作用,以优化您的应用程序并避免遇到内存不足错误。 内存监视工具可让您始终关注潜在问题并确定使用趋势,因此您可以采用主动方式而不是被动方式进行故障排除。 内存泄漏通常难以解决,特别是如果您因配置错误而误报,但是尽早处理内存问题可以避免以后出现更大的问题。 掌握Java内存和GC,使您的整个编程生活变得更加轻松。

AppDynamics通过跟踪内存结构来支持自动JVM泄漏检测–在代码级深度监视生产应用程序。 开始免费试用!

翻译自: https://www.javacodegeeks.com/2016/06/master-java-memory-save-programming.html

java 文件保存在内存

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335961.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sql 返回日期的年月部分_公示|2020年11月部分志愿活动名单公示

2020年11月部分志愿活动名单公示2020年11月18日人文与法学学院院楼协助分发教职工运动会服装志愿活动2020年11月19日人文与法学学院院楼“收彩旗”志愿活动2020年11月20日人文与法学学院组织观看2020年全国科学道德和学风建设宣讲教育报告会直播志愿活动(此活动不录入i志愿)202…

【安卓开发 】Android初级开发(三)动画

逐帧动画 方法一&#xff0c;在xml中设置 1.先将图片加入drawable 2.在drawable中新建xml,设置每一帧的图片和时间 <?xml version"1.0" encoding"utf-8"?> <animation-list xmlns:android"http://schemas.android.com/apk/res/android&…

javafx swing_Swing应用程序中的JavaFX 8 DatePicker

javafx swing1.概述 本文显示了一个使用JavaFX 8 DatePicker控件的Java SE 8 Swing应用程序的示例。 DatePicker控件允许用户以文本形式输入日期或从日历弹出窗口中选择日期。 本示例使用其中带有FX控件的Swing JFrame 。 为了将FX内容嵌入Swing应用程序中&#xff0c; javafx…

cup过高是什么意思_做青和焙火有什么关系?

武夷岩茶制作工艺复杂&#xff0c;环环相扣&#xff0c;每一步工艺对下一步工艺都有很大的影响&#xff0c;经过一系列的生化变化&#xff0c;最终呈现一杯好茶在我们面前&#xff0c;那我们最关心的做青和焙火两个问题&#xff0c;有什么影响呢&#xff1f;它们之间既有因果关…

【安卓开发 】Android初级开发(四)ListView

ListView的实现步骤 1.单独一行的布局可以如下 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:orientation"horizontal"android:layout_width&…

platform_SpringOne Platform 2016回顾

platform我最近结束了在拉斯维加斯参加SpringOne Platform会议的总结。 这是我第一次参加SpringOne。 这是聆听演讲并与软件开发领域的一些顶级专家进行对话的一种体验。 如果您没有参加SpringOne&#xff0c;那么您肯定会想要阅读这篇文章。 我们将讨论这四个主题&#xff0c…

不能装载文档控件。请在检查浏览器的选项中检查浏览器的安全设置_【网络安全宣传周】网络安全小黑板 | 如何正确设置浏览器...

李夏是一个公司的职员&#xff0c;一天晚上加班赶制文档&#xff0c;由于要向客户汇报产品情况&#xff0c;需要获取大量网上信息&#xff0c;然而在制作中却发现浏览器的网页打不开了。第二天原计划向客户展示的材料未能完整汇总&#xff0c;客户见面对接效果也打了折扣。在当…

【安卓开发 】Android初级开发(五)自定义View

1.自定义View的构造函数调用的场景 package com.sina.myapplication;import android.content.Context; import android.util.AttributeSet; import android.view.View;import androidx.annotation.Nullable;public class Textview extends View {//在new Textview类的时候调用…

kafka分布式_带有Kafka和ZeroMQ的分布式类星体演员

kafka分布式因此&#xff0c;您已经有了使用actor的精美设计&#xff0c;选择了JVM和Quasar在该主题上的强大而忠实的观点。 所有明智的决定&#xff0c;但是在集群上进行分配时您有什么选择呢&#xff1f; 星系 Galaxy是一个非常酷的选择&#xff1a;快速的内存中数据网格&am…

vs 不能自动 析构函数_深入理解C++虚函数的override、overload与hide以及虚析构函数...

今天主要讲的是虚函数的override与overload的区别。首先我们来看一段代码&#xff1a;示例代码#include <stdio.h>#include <string>#include <iostream>#include <complex>using namespace std;class Father{public: Father(); ~Father(); virtual vo…

【开源项目】C++BASE64图像编解码算法

ZBase64.h #pragma once #include <string> using namespace std; class ZBase64 { public:ZBase64(void);~ZBase64(void);/*编码DataByte[in]输入的数据长度,以字节为单位*/string Encode(const unsigned char* Data, int DataByte);/*解码DataByte[in]输入的数据长度,…

log4j2 xsd_Log4j 2.x XSD的描述不完整

log4j2 xsd在博客文章JAXB和Log4j XML配置文件中 &#xff0c;我讨论了“与使用JAXB通过Java类处理[Log4j 1.x和Log4j 2.x] XML配置文件相关的细微差别。” 在本文中&#xff0c;我将探讨与通过Log4j 2.x XML Schema文件Log4j-config.xsd生成的JAXB对象生成Log4j 2.x配置XML相关…

tampermonkey怎么不能用了_普洱茶发霉了怎么办?能不能用太阳晒

大家都知道普洱茶要储藏在通风干燥的地方&#xff0c;如果储存不恰当就可能变质发霉。而且普洱茶很容易吸味&#xff0c;需要存放到干净的环境并避免日晒。当发现茶叶发霉的现象比较严重时&#xff0c;需要直接扔掉。如果不严重&#xff0c;可以采用以下方法&#xff1a;千万不…

java开发常见异常_最常见的Java异常及其对Java开发人员的评价

java开发常见异常我知道我说过在完成视频之前我不会发帖&#xff0c;但这一直困扰着我。 至于视频的更新&#xff0c;我有些懒散&#xff0c;有些忙碌&#xff0c;但是我已经准备好记录第一集&#xff0c;这是我第一次有机会&#xff0c;而且我不需要太多的编辑。 无论如何&…

vue 动态变量名_【告别复制粘贴】动态模板生成小技巧

? 这是第 75篇不掺水的原创&#xff0c;想要了解更多&#xff0c;请戳上方蓝色字体&#xff1a;政采云前端团队关注我们吧&#xff5e;本文首发于政采云前端团队博客&#xff1a;告别复制粘贴&#xff1a;动态模板生成小技巧https://www.zoo.team/article/dynamic-template-ge…

【安卓开发 】Android初级开发(六)Activity生命周期

Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Log.d("Activity生命周期","onCreate创建页面");}Overrideprotected void onStart() {super.onStart();Log.d(…

jboss项目导入idea_如何导入任何JBoss BRMS示例项目

jboss项目导入idea在过去几周内&#xff0c;JBoss BRMS演示的用户反复询问我以下内容时&#xff0c;会给您这些提示和技巧&#xff1a; “如何将与各种JBoss BRMS演示项目相关的项目导入到我自己的现有安装中&#xff1f;” 这意味着用户希望在个人安装产品时有一个示例项目&…

amos看拟合度在哪里看_哪里可以看亲爱的热爱的电视剧全集

由杨紫、李现、胡一天、张格出演的暖心甜宠剧《亲爱的&#xff0c;热爱的》正在热播中。该剧根据墨宝非宝小说《蜜汁炖鱿鱼》改编&#xff0c;讲述了一场高智商与高情商的甜萌梦幻爱情故事。剧中李现饰演的高冷G神和杨紫饰演的萌妹学霸&#xff0c;从开头的一见钟情到后面的相处…

【开源项目】Android下自定义HASH【支持一个key对应多个value--根据key排序】

package com.peace.love.carpo_test.tool;import java.util.List; import java.util.Map; import java.util.Set;/*** <p>Can save multiple the value of the map.</p>* Created in 2021/2/20.** author 一笑奈何;*/ public interface HongDou_MultiValueMap<K…

jaxb xml配置_JAXB和Log4j XML配置文件

jaxb xml配置Log4j 1.x和Log4j 2.x均支持使用XML文件来指定日志记录配置 。 这篇文章探讨了与使用JAXB通过Java类处理这些XML配置文件相关的一些细微差别。 本文中的示例基于Apache Log4j 1.2.17 &#xff0c; Apache Log4j 2.6.2和Java 1.8.0_73&#xff08;带有JAXB xjc 2.2.…