問題タブ [object-reference]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java のオブジェクト参照の展開可能なリストはありますか?
Java では、常に配列を使用してオブジェクト参照を格納できます。次に、オブジェクトを格納するために自動的に拡張可能な ArrayList または HashTable があります。しかし、自動拡張可能なオブジェクト参照の配列を持つネイティブな方法を知っている人はいますか?
編集: 私が言いたいのは、Java API に、オブジェクトへの参照を格納する機能 (ただし、XXXList や HashTable のような実際のオブジェクトを格納しない) と自動拡張機能を備えたクラスがあるかどうかを知りたいということです。
c# - ガベージコレクションのために、WPF / C#オブジェクトの逆参照を実行する良い方法はありますか?
アプリケーションの背景
私たちのプラットフォームは、クリックワンスのWPFアプリケーションです。ナビゲーションメニュー構造を含む「シェル」があり、独自のカスタム「ページ」クラスをホストしています。新しいページに移動すると、シェルのコンテンツが(基本的に)スワップアウトされます。
問題
それで、私は非常に大規模なソフトウェアプロジェクトに取り組んでいる会社で働いています。メモリの問題を見つけたコードがたくさんあります。
問題は、イベントが配線されていて、配線されていない場所がアプリケーションにたくさんあることです。開発者がこれを行った理由はわかりません。ユーザーが新しい「ページ」に移動するたびにオブジェクトがクリーンアップされることを期待していたと思います。
(このリリースでは)すべてのページをリファクタリングするオプションはありません。オブジェクトからすべての参照を削除するC#の方法はありますか?(したがって、ガベージコレクターがそのオブジェクトをそのすべての内部参照とともに破棄できるようにします)
このメモリを取り戻そうとしていますが、処理するWPFがある場合、オブジェクトがまだページ(オブジェクト参照)を参照していることを見つけるのは非常に複雑です。
視覚的および論理的なツリーを調べ、プロファイリングアプリケーションを使用して、手動で物事をクリーンアップするのに役立てました(アイデアを証明するため)。これも非常に難しいことがわかりました。
私は座って考えました。なぜオブジェクト参照を見つけるためにこのすべての作業を行うのでしょうか。閉じたときにこの「ページ」を単に「逆参照」することはできないのでしょうか。
それは私をここに連れて来ます:)
どんな助けでも大歓迎です!
更新1
コメントでは、次のことが尋ねられました。
Q:アプリはありますか。実際にメモリの問題がありますか?これらはどのように展示/検出されますか?それとも、GC2が発生するまで、このメモリはぶらぶらしていますか?–ミッチ小麦
A:メモリに問題があります。ページを離れると(ページを保持するプロパティが新しいオブジェクトに設定されます)、古いオブジェクトがガベージコレクターによって収集されることはありません。したがって、メモリは増え続けます。私たちの会社が最初からやり直した場合、このアプリケーションで。最初に確認する必要があるのは、WeakEventパターンを実装し、WPFでより多くのルーテッドコマンドを使用することです。
更新2
私は自分自身の解決策を思いつくことができました。
c# - C# のオブジェクト インスタンス
「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というメッセージが表示されるのはなぜですか
--------- FindControl が機能していないと思います。
flash - 配列に追加された後、カスタム AS3 クラスが null になる
私は AS3 を学ぼうとしている C# 開発者なので、これはかなり初心者の質問になります。
ループ内でインスタンスを作成し、配列に push() するカスタム MovieClip 拡張クラス (Slide) があるため、スコープと GC に関して混乱していますが、その後、アイテムをプルすると null になります。コレクションから。
必要に応じてスライドを切り替えるために、後でスライドを参照できるようにしたいのですが、新しいオブジェクトへの参照を保持するにはどうすればよいですか?
更新:これには 2 つの問題があったようです。URLLoader の complete イベントが呼び出される前に forEach 呼び出しが行われており、forEach が期待どおりに機能していないようです。最終的な作業コードは次のとおりです。
asp.net - ポストバックでオブジェクト参照が失われるのはなぜですか?
asp.net (3.5) アプリケーションを開発していますが、ポストバックの動作に困惑しています。
次のシナリオを考えてみましょう: 基本的にフォームである Web ユーザー コントロールがあります。ただし、各フォーム フィールドはそれ自体が Web ユーザー コントロールです。
保存ボタンのクリック イベントでは、フォーム内のすべてのコントロールを繰り返し処理し、値を保存するデータベース フィールドを参照するフィールド値とフィールド名を取得します。
クリック イベントによってポストバックがトリガーされ、ポストバック中にコントロールにアクセスすると、データベース フィールドのプロパティ値が null になっています。誰かがここに光を当てることができますか?
ここにいくつかの基本的なコードがあります:
c# - C# レポートの LINQ DataContext.SubmitChanges() 「オブジェクト参照がオブジェクトのインスタンスに設定されていません。」
多くの人がこの問題を抱えていると思いますが、私はそれを修正することも、なぜ私がそれを抱えているのか理解することもできません. 私は今、数時間髪を引き裂いています。
「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されます。私の datacontext.SubmitChanges() で、このメソッドが 2 回目に実行されます (一連の ObjectName 文字列をループしています)。
result.Name 値が null になる可能性があるためだと思いましたが、もうそうは思いません。
どういうわけかdataContextが閉じられているようですか?しかし、デバッグモードで接続のステータスを確認すると、エラーが発生した後に「オープン」になります。
リポジトリ パターンと ASP.NET MVC を使用しています。
結果オブジェクト (new Object()) は、LINQ DBML 自動生成クラスのインスタンスであり、単一の拡張メソッドをアタッチして作成した部分クラスも含まれています。クラスの拡張がどのように問題を引き起こしているのかわかりません。
私はアイデアがありません。
何かご意見は?あなたが提供できる助けをありがとう!!
よろしくお願いします、
エリック
python - Python のリスト引数が ByRef のように動作するのはなぜですか?
これは一般的にほとんどの言語に当てはまるかもしれませんが、よくわかりません。私は Python の初心者で、常に C# と VB でリストのコピーを作成してきました。しかし、Python では、リストを引数として渡し、「for i in range」を使用して列挙し、リスト引数の値を変更すると、入力値によって元のリストが実際に変更されます。Python はデフォルトで引数を値で渡すことになっているので、関数が終了しても、関数を呼び出す前の元の値が残っていると思いました。私は何が欠けていますか?ありがとう!
.net - .NETXmlSerializerおよび同じオブジェクトへの複数の参照
私のリポジトリにはがありList<Student>
、登録にはEnrolment.StudentとEnrolment.Courseがあります。これらは、前の2つのリストの学生またはコースの1つを参照しています。 List<Course>
List<Enrolment>
リポジトリでXmlSerializerを使用すると、List<Student>
の同じ学生への参照ごとに、各学生のすべてのプロパティがシリアル化されるため、冗長データが出力されList<Enrolment>
ます。私はこれを解決するためのエレガントな方法を探しています。
デシリアライズ後、デシリアライズによって作成された重複オブジェクトインスタンスのID値を使用して参照を修正できますが、これはハックのようです。
冗長な出力を修正する1つの方法は、XmlIgnore Enrolment.StudentとEnrolment.Courseを使用して、シリアル化用にさらに2つのプロパティ(Enrolment.StudentIDとEnrolment.CourseID)を作成することです。List<Student>
ただし、逆シリアル化中は、およびの逆シリアル化の結果が利用できないため、Enrolment.StudentおよびEnrolment.Courseの参照を設定できません(AFAIK)List<Course>
。
私が考えたもう1つの方法は、オブジェクト階層の下位でシリアル化することです。各リストを個別に実行し、逆シリアル化の順序を制御します。これは実行しません。
もう1つの方法は、XmlIgnoreを使用して、それ自体の逆シリアル化が完了した後にList<Enrolment>
初期化する登録シリアル化ヘルパークラスを作成することです。List<Enrolment>
これは大変な努力のようです。
他の人は、XmlSerializerを使用して、同じオブジェクトへの複数の参照をどのようにシリアル化/逆シリアル化しますか?
c# - オブジェクト参照がオブジェクトリポジトリのインスタンスに設定されていません
別の例外を実際に覆っているXAMLParseExceptionが発生しています。スタックトレースの一部は次のとおりです。29
行 目は次のとおりです。
Message=Object reference not set to an instance of an object.
Source=AssignmentOrganizer
StackTrace:
at AssignmentOrganizer.MainWindow..ctor() in C:\Users\Mohit\Documents\Visual Studio 2010 \Projects\AssignmentOrganizer\AssignmentOrganizer\MainWindow.xaml.cs:line 29
ここで、lvwMainはListViewであり、_assignmentsRepoは次のように宣言されたIAssignmentRepositoryです。
ここでエラーが発生します。私はリポジトリパターンを使用しています。推測しても構わないと思っている人はいますか?
これが私のXAMLです:
asp.net - このイベント ハンドラー コードにより、オブジェクト参照がオブジェクトのインスタンスに設定されないのはなぜですか。エラー (ライブ サーバーにのみ存在し、dev では問題ありません)?
ボタン クリック イベントのコードは次のとおりです。
スタックは次のとおりです。
VS2008 ではすべてオフラインで正常に動作しますが、公開後にこのエラーが発生します。
ありがとう。